加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在delphi中复制对象

发布时间:2020-12-15 04:03:20 所属栏目:大数据 来源:网络整理
导读:我有一个复杂的对象来深度复制(大量的数组,对象,指针,继承层的层,各种类型的数百个成员等),并通过Delphi的Assign方法重新创建它并不高效,而且很可能太复杂. 我一直在看Rtti,它似乎是一个不错的选择,但到目前为止,我无法涵盖所有??可能的情况.我不想浪费那么
我有一个复杂的对象来深度复制(大量的数组,对象,指针,继承层的层,各种类型的数百个成员等),并通过Delphi的Assign方法重新创建它并不高效,而且很可能太复杂.

我一直在看Rtti,它似乎是一个不错的选择,但到目前为止,我无法涵盖所有??可能的情况.我不想浪费那么多时间,希望找到一个好的,简单的例子.不幸的是,我找不到一个.到目前为止我一直在做的是,通过循环遍历对象中的所有TRttiField(TRttiType.GetFields())并尝试使用基于TTypeKind值的指针来分配所有内容. (tkPointer,tkClass,tkClassRef …)

我找到了一个JSON /编组示例,但它无法深度复制我的复杂对象;我收到了错误;

Internal: Type tkPointer is not currently supported

http://www.yanniel.info/2012/02/deep-copy-clone-object-delphi.html

Delphi中有什么接近C#二进制序列化并使用内存流创建深层副本.或者,您是否知道Delphi使用RTTI或JSON /编组进行深度复制时可以使用最复杂的对象?

解决方法

简而言之,你不能使用rtti来简化深度复制(这将比使用经典的赋值覆盖更复杂,更容易出错)

所以你需要更接近TPersistent及其子对象并正确覆盖Assign,AssignTo方法(没有更简单的方法)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读