利用MOVE进行内存拷贝无效的有关问题
利用MOVE进行内存拷贝无效的问题
type
T =record
str1:string[10];
str2:string[5];
end;
procedure TForm1.Button1Click(Sender: TObject);
var
tmpStr :string;
tmp:T;
tmpP1,tmpP2:PChar;
begin
tmpStr := 'zzzzz ';
FillChar(tmp,sizeof(T),#0);
tmpP1 := @tmpStr[1];
tmpP2 := @(tmp.Str1[1]);
Move(tmpP1,tmpP2,5);
ShowMessage(tmp.str1);
end;
tmp.str1中却没有任何数据,为什么MOVE没把数据复制过去?
------解决方案--------------------
Move(tmpP1^,tmpP2^,5);
------解决方案--------------------
var
tmpStr :string;
tmp:T;
tmpP1,tmpP2:PChar;
begin
tmpStr := 'zzzzz ';
FillChar(tmp, sizeof(T), #0);
tmpP1 := @tmpStr[1];
tmpP2 := @(tmp.Str1[0]);
Move(tmpP1^,tmpP2^,5);
tmp.str1 := TrimRight(tmp.str1);
ShowMessage(tmp.str1);
end;
------解决方案--------------------
Move(tmpP1^,tmp,5);
------解决方案--------------------
move穿的参数你在仔细看看
是指针还是值?
type
T =record
str1:string[10];
str2:string[5];
end;
procedure TForm1.Button1Click(Sender: TObject);
var
tmpStr :string;
tmp:T;
tmpP1,tmpP2:PChar;
begin
tmpStr := 'zzzzz ';
FillChar(tmp,sizeof(T),#0);
tmpP1 := @tmpStr[1];
tmpP2 := @(tmp.Str1[1]);
Move(tmpP1,tmpP2,5);
ShowMessage(tmp.str1);
end;
tmp.str1中却没有任何数据,为什么MOVE没把数据复制过去?
------解决方案--------------------
Move(tmpP1^,tmpP2^,5);
------解决方案--------------------
var
tmpStr :string;
tmp:T;
tmpP1,tmpP2:PChar;
begin
tmpStr := 'zzzzz ';
FillChar(tmp, sizeof(T), #0);
tmpP1 := @tmpStr[1];
tmpP2 := @(tmp.Str1[0]);
Move(tmpP1^,tmpP2^,5);
tmp.str1 := TrimRight(tmp.str1);
ShowMessage(tmp.str1);
end;
------解决方案--------------------
Move(tmpP1^,tmp,5);
------解决方案--------------------
move穿的参数你在仔细看看
是指针还是值?