首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

复制对象,该怎么解决

2012-03-07 
复制对象delphi中怎么复制一个对象啊?而不共用地址。。。如:CoolTrayIcon1: TCoolTrayIconCoolTrayIcon2: TC

复制对象
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已经创建,现在 你要复制到CoolTrayIcon2var FS : TMemoryStream;    CoolTrayIcon2: TCoolTrayIcon;begin  FS := TMemoryStream.Create;  CoolTrayIcon2 := TCoolTrayIcon.Create;  FS.WriteComponent(CoolTrayIcon1);  FS.Seek(0,2);  FS.ReadComponent(CoolTrayIcon2);  FS.Free;end; 

热点排行