![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Есть элементарная dll-ка. Например:
Код:
library www; uses SysUtils; //{$R *.res} procedure xxx(inf : pstring);stdcall; var str:ansistring; ft:textfile; begin assignfile(ft,inf^); reset(ft); readln(ft,str); closefile(ft); end; exports xxx; begin end. Есть её подключение в exe-модуле: Код:
program test; {$APPTYPE CONSOLE} uses SysUtils; procedure xxx(fname : pstring);stdcall;external 'www.dll';//procedure's initialization label _FILE_MISSING; var ss:string; BEGIN write('Enter textfile name (without extension .TXT) '); readln(ss); ss:=ss+'.txt'; if FileExists(ss)=false then goto _FILE_MISSING writeln('Input file - ',ss); xxx(@ss); write('Proceed is SUCCESSFUL! '); _FILE_MISSING: END. Проблема такова: при выполнении кода assignfile(ft,inf^) вылазит ошибка 'The specified file was not found'. Я так понимаю, что у dll-модуля нет доступа к строковой переменной, указанной через поинтер inf^ потому, что она, наверное, не глобальная (т.е. не видима за пределами exe-модуля). В любом случае, всё это - странно. Подскажите, как быть и что делать. Или объясните, пожалуйста, в чём моё недопонимание. Последний раз редактировалось sVAR, 11.03.2012 в 19:58. |