procedure TForm1.Button1Click(Sender: TObject);
var
aaa,bbb,ccc:PChar;
str:String;
begin
str:='aaaaa';
GetMem(aaa,Length(str));
GetMem(bbb,Length(str));
GetMem(ccc,Length(str));
Move(str[1],aaa^,length(str));
Move(str[1],bbb^,Length(str));
Move(str[1],ccc^,Length(str)); showmessage(aaa); //显示为 aaaaa
showmessage(bbb); //显示为 aaaaa+乱码 //错误
showmessage(ccc); //显示为 aaaaa showmessage(IntToStr(StrLen(aaa))); //显示长度为 5
showmessage(IntToStr(StrLen(bbb))); //显示长度为 9 //错误
showmessage(IntToStr(StrLen(ccc))); //显示长度为 5 FreeMem(aaa);
FreeMem(bbb);
FreeMem(ccc);
end;为什么上面bbb会出错,我使用的是 Delphi 7,求高手帮忙解决,谢谢
var
aaa,bbb,ccc:PChar;
str:String;
begin
str:='aaaaa';
GetMem(aaa,Length(str));
GetMem(bbb,Length(str));
GetMem(ccc,Length(str));
Move(str[1],aaa^,length(str));
Move(str[1],bbb^,Length(str));
Move(str[1],ccc^,Length(str)); showmessage(aaa); //显示为 aaaaa
showmessage(bbb); //显示为 aaaaa+乱码 //错误
showmessage(ccc); //显示为 aaaaa showmessage(IntToStr(StrLen(aaa))); //显示长度为 5
showmessage(IntToStr(StrLen(bbb))); //显示长度为 9 //错误
showmessage(IntToStr(StrLen(ccc))); //显示长度为 5 FreeMem(aaa);
FreeMem(bbb);
FreeMem(ccc);
end;为什么上面bbb会出错,我使用的是 Delphi 7,求高手帮忙解决,谢谢
var
aaa,bbb,ccc:PChar;
str:String;
begin
str:= 'aaaaa';
GetMem(aaa,Length(str));
Move(str[1],aaa^,length(str)); GetMem(bbb,Length(str));
Move(str[1],bbb^,Length(str)); GetMem(ccc,Length(str));
//Move(str[1],aaa^,length(str));
//Move(str[1],bbb^,Length(str));
Move(str[1],ccc^,Length(str)); showmessage(aaa); //显示为 aaaaa
showmessage(bbb); //显示为 aaaaa+乱码 //错误
showmessage(ccc); //显示为 aaaaa showmessage(IntToStr(StrLen(aaa))); //显示长度为 5
showmessage(IntToStr(StrLen(bbb))); //显示长度为 9 //错误
showmessage(IntToStr(StrLen(ccc))); //显示长度为 5 FreeMem(aaa);
FreeMem(bbb);
FreeMem(ccc);
end;LZ这样写就没有问题了...
var
aaa,bbb,ccc:PChar;
str:String;
begin
str:= 'aaaaa';
GetMem(aaa,Length(str));
Move(str[1],aaa^,length(str)); GetMem(bbb,Length(str));
Move(str[1],bbb^,Length(str)); GetMem(ccc,Length(str));
//Move(str[1],aaa^,length(str));
//Move(str[1],bbb^,Length(str));
Move(str[1],ccc^,Length(str)); showmessage(aaa); //显示为 aaaaa
showmessage(bbb); //显示为 aaaaa
showmessage(ccc); //显示为 aaaaa showmessage(IntToStr(StrLen(aaa))); //显示长度为 5
showmessage(IntToStr(StrLen(bbb))); //显示长度为 5
showmessage(IntToStr(StrLen(ccc))); //显示长度为 5 FreeMem(aaa);
FreeMem(bbb);
FreeMem(ccc);
end;LZ这样写就没有问题了...
procedure TForm1.Button1Click(Sender: TObject);
var
aaa,bbb,ccc:PChar;
str:String;
begin
str:='aaaaa';
(aaa,length(str)+1);
GetMem(bbb,length(str)+1);
GetMem(ccc,length(str)+1);
Move(str[1],aaa^,length(str)+1);
Move(str[1],bbb^,length(str)+1);
Move(str[1],ccc^,length(str)+1); showmessage(aaa); //显示为 aaaaa
showmessage(bbb); //显示为 aaaaa+乱码 //错误
showmessage(ccc); //显示为 aaaaa showmessage(IntToStr(StrLen(aaa))); //显示长度为 5
showmessage(IntToStr(StrLen(bbb))); //显示长度为 9 //错误
showmessage(IntToStr(StrLen(ccc))); //显示长度为 5 FreeMem(aaa);
FreeMem(bbb);
FreeMem(ccc);
end;
可以结贴了吧?