Показать сообщение отдельно
  #2  
Старый 11.03.2012, 19:48
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Стоит попробовать в целях дебага перед 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 параметр.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием