Есть элементарная 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-модуля).
В любом случае, всё это - странно.
Подскажите, как быть и что делать. Или объясните, пожалуйста, в чём моё недопонимание.