String类型转化成PChar类型需要注意:
如果使用了将AnsiString字符串强制转换为PChar类型的函数和过程,在使用结束后,要手工把它的长度恢复为原来以Null结束的长度。STRUTILS单元中的RealizeLenght()函数可以实现这一点:
procedure REAlizeLength(var S : String);
begin
SetLength(S,StrLen(PChar(S)));
end;
调用ReallizeLength();
var
S: STing;
begin
SetLength(S,256);//重要首先给字符串分配空间
//调用函数,S现在包含目录字符串
GetWindowDirectory(PChar(s),256);
RealizeLength(S);//设置S的长度为Null结束的长度;
end;
注意:在将字符串转化为PChar类型时要小心,因为字符串在超出其作用范围时有自动回收功能,因此当进行P :=PChar(Str)的赋值时,P的作用域(生存期)应当大于Str的作用域。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步