СообЧа > База Знаний > Программирование > Delphi

Вопрос

В 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 Сообщество Чайников
Контактная информация