Форум: "Основная";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизПередача по ссылке параметра в Dll-процедуру Найти похожие ветки
← →
Aragon © (2005-10-31 23:44) [0]Всем привет!
Есть библиотека в ней процедура в качестве параметра ей передается указатель на TStringList, и данная процедура забивает этот лист данными.
PStringList = ^TStringList;
procedure(NameDll: PChar; ProcDllList: PStringList): Boolean; stdcall;
begin
...ProcDllList^.Add(Str);...
end;
В exe-программе при статическом связывании процедура корректно работает, но при динамическом - вы дает ошибку доступа к нетому адресу памяти.
Пробовал подключать ShareMem и в dll и в exe, но ничего не изменилось. Только при закрытии приложиня уже появилась еще одна ошибка access violation.
Использовал
procedure(NameDll: PChar; var ProcDllList: TStringList): Boolean; stdcall;
Но в мой лист данные не заносились - он был пуст.
В чем причина. Подскажите. Как передавать в качестве параметра dll-процедуры любые динамические объекты?
За ранее спасибо!
← →
Юрий Зотов © (2005-11-01 01:01) [1]В Delphi экземпляр класса - это уже указатель, поэтому можно передавать TStringList напрямую, а PStringList не нужен (с ним получается указатель на указатель).
ShareMem оставьте. А StdCall можно убрать, без него будет немного быстрее работать.
← →
Гаврила © (2005-11-01 10:55) [2]Вообще не стоит передавать указатели на экземпляр класса в библиотеку (если скомпилировано без пакетов).
Чревато порчей памяти
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.023 c