Вопрос
В DLL пишу функцию которая возвращает STRING, при вызове этой функции возникает ошибка на какой-то блок памяти, если функция возращает integer то все ок! В чем проблема?
Ответ
Из справки по Делфи:
Если DLL использует longstring или dinamic arrays как параметр или результат функций необходимо использовать в dll и самом приложении использовать юнит ShareMem, это также верно, если приложении или dll занимает память при помощи New или GetMem с освождением этой памяти в другом модуле с помощью вызова Dispose или FreeMem. ShareMem всегда должен быть первым модулем в списке uses. ShareMem — интерфейсный модуль для менеджера памяти BORLANDMM.DLL. BORLANDMM.DLL должен распростроняться с приложением, которое использует ShareMem. То есть либо так, либо мспользовать shortstring при помощи директивы компилятора {$H-}, либо использовать типы PChar. Последнее предпочтительней для совместимости с программами на других языках (например С/C++ и прочее).
Из конференции Expert_FAQ
Copyright 2000-2004 Сообщество Чайников
Контактная информация