Конференция "FreePascal" » Во FreePascal'е какой-то другой PAnsiChar?
 
  • TUser © (26.04.05 14:38) [0]
    Вот этот код прекрасно работает в Delphi7. FreeaPascal 1.9.6 добавляет перед словом test несколько случайных символов. Если же в выделенной жирным строке явно прописать copy(ac2,1,i), то все Ок. Т.е. я так понимаю, после строки ac2 не записывается #0.

    program T;
    uses Windows, SysUtils;

    function GetSN(LN:string):string;
    var ac1,ac2:PAnsiChar;
        s:string;
        i:integer;
    begin
       s:=extractfilepath(LN);
       ac1:=PAnsiChar(s);
       i:=GetShortPathName(ac1,nil,0);
       GetMem(ac2,i);
       GetShortPathName(ac1,ac2,i);
       result:=ac2+extractfilename(LN);
       FreeMem(ac2);
    end;

    begin
     writeln ('test -> '+GetSN('test'));
    end.



    PS. GetMem(ac2,i+1), и FillChar или ac2[i+1]:=#0 не решают проблемы.
  • TUser © (26.04.05 14:39) [1]
    PPS. mode delphi включен
  • TUser © (26.04.05 14:43) [2]
    Поспешил спрашивать. Самому думать надо ac2[i]:=#0 :(
 
Конференция "FreePascal" » Во FreePascal'е какой-то другой PAnsiChar?
Есть новые Нет новых   [119205   +13][b:0.002][p:0.002]