这个问题,应该是每个使用Delphi的朋友经常会遇到的疑问,针对如何将String变量赋值给Pchar变量,网上有很多种说法,如PChar、StrPas。但经过我实际试用,发现以下问题。如果你感兴趣,可以在你delphi7编译下面二段代码,看其结果有何不同?
代码1
var
p : pchar;
s : string;
i : integer;
begin
s := 'hello world';
i := length(s);
GetMem(p,i);
try
p := PChar(s);
finally
FreeMem(p); //此处会出错
end;
end;
代码2
var
p : pchar;
s : string;
i : integer;
begin
s := 'hello world';
i := length(s);
GetMem(p,i);
try
StrPCopy(p,s);
finally
FreeMem(p); //可以正确释放
end;
end;