这个问题,应该是每个使用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;