1、调用了StrNew之后要调用StrDispose,否则会有内存泄露。而StringList的GetText方法中调用了StrNew,所以如果你用了GetText,必须接着用StrDispose。
2、
function GetTextStr(strList: TStringList): string;
var
I, L, Size, Count: Integer;
P: PChar;
S, LB: string;
begin
SetLength(Result, Size);
P := Pointer(Result);
System.Move(Pointer(S)^, P^, L);
end;
function TZxiEml2.GetContent: PCPCChar;
begin
Result := StrNew(PChar(GetTextStr(FContentList)));
//没有StrNew的情况下,调用GetContent会出错,应该是GetTextStr返回的值出了GetContent就失效了
end;
3、
pchar和string是不一样的,前者索引以0开始,后者以1开始,前者以#0结束,后者最后一个字符不是#0。由pchar(string)得来pchar和原生的pchar也不一样。