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

delphi – 如何将对象存储到磁盘?

发布时间:2020-12-15 10:08:03 所属栏目:大数据 来源:网络整理
导读:所有的荣耀如何存储一个对象到磁盘? 我的对象派生自TObjectList,因此它拥有其他对象. 哪个是最快最简单的方法?哪个是兼容的方式? 序列化不是一个解决方案,因为我想保存非公共属性和它所拥有的对象列表! 目前我试图将每个对象独立地保存为一个二进制文件,
所有的荣耀如何存储一个对象到磁盘?
我的对象派生自TObjectList,因此它拥有其他对象.

哪个是最快最简单的方法?哪个是兼容的方式?

序列化不是一个解决方案,因为我想保存非公共属性和它所拥有的对象列表!

目前我试图将每个对象独立地保存为一个二进制文件,然后将它们打包在一起.这是一个漫长的过程,但允许我使用较新版本的程序加载对象的旧版本(与以前保存的项目兼容).无论如何,复杂性开始增长,而且看起来还不错.

解决方法

我也主要使用手工序列化为我自己的数据结构.多版本角度是主要原因之一.

但是,在您的情况下,这很困难,因为并非所有对象(tobjectlist)都是从包含虚拟抽象方法加载/存储的自己的层次结构中派生出来的.

D2010序列化(其中几乎允许RTTI)可能是一个解决方案,但可能需要一个新的delphi版本,更糟糕的是,它结束了手动处理版本控制. (例如,当格式更改时,将旧字段的值复制为新的字段)

如果手动流式传输不方便,则可能会有不同的方法来为对象的数据部分提供抽象定义,并从这些抽象定义生成源代码(字段声明和流代码).优点在于,您可能需要在这里和那里的某些自定义代码中滑动,或者将您的生成器修补为版本控制问题.

我做了一次这样一个业务对象与SQL映射与超过800个对象.既然是Delphi之前泛型的时候,我也为每个对象以及其他帮助器和转换器对象/例程生成了类型安全的容器类型.

这是很多工作,虽然设置,只有值得,如果你有一个项目,真的有很多的对象和领域(数百,如果不是数千),并确保你需要维护它与重大突变相当一些时间到了

(编辑:李大同)

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

    推荐文章
      热点阅读