复制对象,该怎么解决
复制对象
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中怎么复制一个对象啊?而不共用地址。。。
如: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;