复制对象,该怎么解决

复制对象
delphi中怎么复制一个对象啊?而不共用地址。。。
如:CoolTrayIcon1: TCoolTrayIcon;
  CoolTrayIcon2: TCoolTrayIcon;

CoolTrayIcon1 := CoolTrayIcon2;

这样两对实例共用了同一个内存,CoolTrayIcon1.Free 后,CoolTrayIcon2也释放了,怎么解决?!谢谢

------解决方案--------------------
CoolTrayIcon1.Assing(CoolTrayIcon2);
------解决方案--------------------
如果没提供assign那么 只有重写这个方法,

或者copymemory()讲内存复制下。同一个进程下应该没问题把
------解决方案--------------------
那就是没提供这个方法,你可以重写这个方法比较复杂。


------解决方案--------------------
 
CopyMemory(CoolTrayIcon1, CoolTrayIcon2, T2.InstanceSize);
------解决方案--------------------
var
SS:PPoint;
SL:TStringList;
begin
SS:=GetMemory(Sl.InstanceSize);
Sl:=TStringlist.Create;
Sl.Text:='dafadsfadsfasdf';
CopyMemory(SS,Sl,Sl.InstanceSize);
ShowMessage(TStringList(SS).Text);
------解决方案--------------------
类似写法,都是对象,内存复制 还原
------解决方案--------------------
Delphi(Pascal) code

假设 CoolTrayIcon已经创建,现在 你要复制到CoolTrayIcon2
var FS : TMemoryStream;
    CoolTrayIcon2: TCoolTrayIcon;
begin
  FS := TMemoryStream.Create;
  CoolTrayIcon2 := TCoolTrayIcon.Create;
  FS.WriteComponent(CoolTrayIcon1);
  FS.Seek(0,2);
  FS.ReadComponent(CoolTrayIcon2);
  FS.Free;
end;