注意,上面的代码在退出的时候会产生一个异常,因为Str实际上只是一个指针,在释放A,B的时候
系统会两次释放同一个字符串,造成了错误。因此,对含有指针内容的对象进行Copy是很危险的。
如果改为不带指针的就很安全,没有任何问题:
type
TA=class
i,j:Integer;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
A,B:TA;
begin
A:=TA.Create;
B:=TA.Create;
A.i:=123;
A.j:=456;
CopyInstance(A,B);
Caption:=Format('%d %d',[B.i,B.j]);
A.Free;
B.Free;
end;