求 String 轉換至 PChar 的函數(50分)

我也遇过这方面的一些情况,虽然问题结束了,但是还是说一说吧。
比如说以下函数
var
str:String;
begin
SetLength(str,255);
GetWindowText(Handle,PChar(str),255);
end;
以上函数返回之后的str直接使用应该没有事情,但是如果参预+等操作时却很可能得不到
正确的结果。
这绝不由于PChar(str)转型造成的,而实际造成这种问题的原因是SetLength函数。
它分对String类型的变量做一些特殊的处理。
正确的解决方法是在调用GetWindowText函数之后再调用以下的函数。
SetLength(str,strlen(PChar(str)));
或者简单一点的
str:=PChar(str);
 
顶部