如何复制类?

nevid 2004-12-03 01:53:22
我有一个类
TID = class(TComponent)
public
id: integer;
name: string;
end;

var
aid,bid: TID;

aid := TID.Create(nil);
bid := TID.Create(nil);
aid.id := 4;
aid.name := 'aa';

现在我想把aid的所有内容复制到bid

bid.assign(aid);

上一句总是报错 Cannot assign a TID to a TID.什么原因?
...全文
188 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjkjdx 2004-12-03
  • 打赏
  • 举报
回复
mark~~~~~
largewang 2004-12-03
  • 打赏
  • 举报
回复
TID = class(TComponent)
published
property id: integer read FID write FID;
property name: string read FID write FID;
end;


用assign()
nieyc 2004-12-03
  • 打赏
  • 举报
回复
“那有没有办法将任意两个相同的类互相复制?”
相同的类怎么理解,父类与子类算相同吧?没有关系的两个类算相同吗?再思考一下,谁便写个Assign会出错的。
赖皮鹏 2004-12-03
  • 打赏
  • 举报
回复
Assign()方法继承自TPERSISTENT,BUT NOT TCOMPONENT。
yinzhiw 2004-12-03
  • 打赏
  • 举报
回复
你必须自己去覆盖这个Assign()方法
zeroxing 2004-12-03
  • 打赏
  • 举报
回复
深度拷贝,恩,目前好不知道怎么去做。
nevid 2004-12-03
  • 打赏
  • 举报
回复
那有没有办法将任意两个相同的类互相复制?
birdhaha 2004-12-03
  • 打赏
  • 举报
回复
写个assign()方法吧。
TID = class(TComponent)
public
id: integer;
name: string;
procedure assign(myId:Tid);
end;

procedure assign(myId:Tid);
begin
id:=myId.id;
name:=myId.name;
end;
bee2518 2004-12-03
  • 打赏
  • 举报
回复
自定义类的Assign是自己定义的方法才可以用
你去看看那些TFont之类的例子
birdhaha 2004-12-03
  • 打赏
  • 举报
回复
你的TID类没有assign()这个方法吧?

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧