//这代码Delphi7下能正常显示出vp的字符串。
//delphi xe下就不能了,因为xe是以unicode处理的。
//主要是如何得到xe下一个string的内存占用长度?而不是字符串长度!procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
vi: DWORD;
vp: Pointer;
begin
str:= '徐师傅';
vi := lstrlen(PChar(str));
ShowMessage(IntToStr(vi));
ShowMessage(IntToStr(Length(str)));
ShowMessage(str);
GetMem(vp, vi);
ZeroMemory(vp, vi);
MoveMemory(vp, PChar(str), vi );
ShowMessage(PChar(vp));
end;
//delphi xe下就不能了,因为xe是以unicode处理的。
//主要是如何得到xe下一个string的内存占用长度?而不是字符串长度!procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
vi: DWORD;
vp: Pointer;
begin
str:= '徐师傅';
vi := lstrlen(PChar(str));
ShowMessage(IntToStr(vi));
ShowMessage(IntToStr(Length(str)));
ShowMessage(str);
GetMem(vp, vi);
ZeroMemory(vp, vi);
MoveMemory(vp, PChar(str), vi );
ShowMessage(PChar(vp));
end;
后面也一样
以两个0(两个字节)结束,