Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: CL | DM;

Вниз

Передача по ссылке параметра в 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.033 c
2-1131345790
officeman
2005-11-07 09:43
2005.11.27
Borland Pascal =) Возведение в степень


3-1129625697
winsido
2005-10-18 12:54
2005.11.27
DBLookupComboBox


10-1108323176
Ермак
2005-02-13 22:32
2005.11.27
Посоветуйте книжку по COM!


2-1131282065
DimaDA
2005-11-06 16:01
2005.11.27
как динамически создать основную форму без dfm


2-1131537550
Снежанка
2005-11-09 14:59
2005.11.27
Помогите нарисовать (TCanvas)