Показать сообщение отдельно
  #2  
Старый 15.03.2006, 18:13
AlexZL AlexZL вне форума
Новичок
 
Регистрация: 06.01.2006
Сообщения: 87
Репутация: 20
Лампочка работа с Dll

Так оно и не должно работать.
Код:
function Info: TStrings; StdCall;
begin
Result.Clear;
Result.Add('AUT=TB');
Result.Add('VER=1.00');
Result.Add('INF=Инфа о функции...');
Result.Add('PRS=NO');
end;

У тебя Функция в DLL'ке возвращает тип TStrings. А TStrings - это абстрактный класс. Да и вообще любые классы нельзя передавать из библиотеки в качестве параметра. Ведь в переменную Result в твоей ф-ии помещается не строка и не список строк, а указатель на класс. А библиотека и твоя программа имеют каждый свое адресное пространство. Получается передается адрес класса TStrings в библиотеку - библиотека хочет записать инфу по этому адресу, но у библиотеки по этому адресу находятся совсем другие данные! Это же указатель для приложения. Вот и получается - Access Violation!
Ответить с цитированием