Стоит попробовать в целях дебага перед AssignFile вывести полученную строку через ShowMessage(inf^); или через WriteLn(inf^); Строка должна быть "видна", она же по адресу передается.
И проверить наличие файла в рабочей папке exe-файла
.
UPD: только что скомпилировал Ваш код. У меня в Delphi XE работает нормально. Модифицировал всего чуть-чуть:
Код:
program tst;
{$APPTYPE CONSOLE}
uses
SysUtils;
procedure xxx(fname : pstring);stdcall;external 'www.dll';//procedure's initialization
var ss: String;
i:integer;
begin
write('Enter textfile name (without extension .TXT) ');
readln(ss);
ss:=ss+'.txt';
if FileExists(ss) then
begin
writeln('Input file - ',ss);
xxx(@ss);
write('Proceed is SUCCESSFUL! ');
readln;
end;
end.
Но сути это не должно менять. В теории может быть такое, что какая-то несостыковка с типами строк. Можно попробовать использовать функцию с таким заголовком:
Код:
procedure xxx(fname : AnsiString);stdcall;external 'www.dll';//procedure's initialization
Ну и соответственно поменять в DLL-ке (и использовать без "^") и ss сделать AnsiString для упрощения. Так у меня тоже работает.
Если же планируется изменение строки - передавать как VAR параметр.