![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
функции в dll
d_oleg © (2006-04-17 12:05:00)Объясните мне глупому, пожалуйста:
мне нужно получить из dll некую строку, как результат выполнения функции. Возвращать нужно pChar. Теперь внимание, вопрос: ежели я выделяю память под строку в dll:
function (...): pChar;
begin
....
pValue := StrAlloc(length(AStr));
StrPCopy(pValue, AStr);
Result := pValue;
end;
то где ж мнее ее освобождать? неужто ж exe, подключающем dll? Или же все это делается как-то иначе?
d_oleg (2006-04-17 14:39:00) [1]MBo, спасибо, поробую.
MBo (2006-04-17 12:52:00) [2]Делай, как часто принято в API-функциях
function GetIt(pc: PChar): Integer;
при передаче нулевого указателя функция возвращает необходимый размер строки, программа выделяет буфер и во втором вызове передает адрес строки - приемника.
Сергей М. (2006-04-17 12:12:00) [3]
где ж мнее ее освобождать?
Все зависит от установленных разработчиками взаимодействующих модулей конкретных соглашений.
> неужто ж exe, подключающем dll?
Иногда и так поступают, хотя это скорее исключение, нежели правило.