delphi中怎么复制一个对象啊?而不共用地址
如:CoolTrayIcon1: TCoolTrayIcon;
    CoolTrayIcon2: TCoolTrayIcon;CoolTrayIcon1 := CoolTrayIcon2;这样两对实例共用了同一个内存,CoolTrayIcon1.Free 后,CoolTrayIcon2也释放了,怎么解决?!谢谢

解决方案 »

  1.   

    如果没提供assign那么 只有重写这个方法,或者copymemory()讲内存复制下。同一个进程下应该没问题把
      

  2.   

    提示报错:Cannot assign a TCoolTrayIcon to a TCoolTrayIcon 
    怎么回事。。
      

  3.   

     
    CopyMemory(CoolTrayIcon1, CoolTrayIcon2, T2.InstanceSize);
      

  4.   

    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);
      

  5.   


    假设 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;