Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.013 c
4-1127571941
АлЁша
2005-09-24 18:25
2005.11.27
Посылка сообщений


3-1128543771
Слоник
2005-10-06 00:22
2005.11.27
Delphi 8 - как использовать сторонний ODBC-драйвер


3-1129097530
erika
2005-10-12 10:12
2005.11.27
получении значения по дополнительной таблице


14-1130927187
Бугимэн
2005-11-02 13:26
2005.11.27
MS Office Outlook + NNTP


2-1131612167
iamkate
2005-11-10 11:42
2005.11.27
Сжатие файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский