Delphi组件序列化

Delphi组件序列化

Delphi Component Serialization

任何人都遇到将组件序列化为文件并读回它们的问题,特别是在组件供应商升级VCL组件的区域。例如,使用DelphiX序列化的文件,然后在几年后使用delphiY读回。序列化格式是否发生更改?如果更改,可以做些什么以防止在升级时读取组件中的错误。


用于序列化已发布属性的基于RTTI的内置系统很容易受到组件更改的影响。只要将旧属性保留在新对象中,前进就可以管理。 IE。您可以按原样保留属性界面,但可以根据需要扔掉内容。向后退的情况更糟-因为在较旧版本的加载中无法打开较新版本的保存属性,这将是一个问题。

有组件/库(http://www.torry.net/quicksearchd.php?String=RTTI


感谢您的回复。我试图避免自定义序列化并利用每个组件的序列化技术,但是由于缺少opf来"修补"升级到新组件格式的任何方法,我猜想自定义序列化是唯一的方法。


格式将最终改变,因为供应商将在其组件中添加功能。序列化只是循环所有已发布的属性,并将它们保存到流中。读回它们时,将从流中读取的每个属性都重新设置为组件。如果该属性不再存在,则您有问题。我认为除了一些基本的异常处理之外,您不能对此做任何事情。

保证兼容性的最佳方法是进行自己的序列化。


推荐阅读

    linux文件复制的命令?

    linux文件复制的命令?,系统,文件,命令,目录,源文件,基本知识,位置,目标,选

    linux复制命令文件?

    linux复制命令文件?,系统,文件,命令,目录,基本知识,源文件,目标,文件夹,路

    linux下文件均分命令?

    linux下文件均分命令?,管理,情况,系统,工作,信息,地址,命令,目录,单位,设备,L

    linux查文件数量命令?

    linux查文件数量命令?,系统,数据,电脑,命令,文件,信息,代码,对比,软件,第三,l

    linux升级成功命令?

    linux升级成功命令?,系统,电脑,软件,工具,在线,服务,设备,官方网站,最新,时

    linux命令去重文件?

    linux命令去重文件?,系统,工作,命令,信息,数据,环境,代码,文件,目录,操作,Lin

    linux匹配文件名命令?

    linux匹配文件名命令?,系统,时间,发行,位置,工具,软件,名称,盘后,电脑,盘中,l

    linux反序列化命令?

    linux反序列化命令?,状态,数据,情况,环境,网络,适当,下来,接口,对象,序列,序

    改文件名linux命令?

    改文件名linux命令?,名字,软件,文件,命令,位置,系统,文件名,目录,指令,方面,l

    linux命令文件加锁?

    linux命令文件加锁?,数据,密码,系统,设备,代码,地址,名单,信息,数字,统一,请

    linux拼接文件命令?

    linux拼接文件命令?,文件,数据,命令,代码,时间,信息,系统,情况,管理,标准,Lin

    linux文件常用命令?

    linux文件常用命令?,工作,地址,信息,系统,命令,目录,标准,情况,管理,常用命

    文件写入linux命令?

    文件写入linux命令?,文件,命令,状态,系统,名称,时间,首次,数据,数字,内容,在l

    linux命令写满文件?

    linux命令写满文件?,地址,工作,命令,系统,管理,文件,目录,标准,电脑,信息,Lin

    文件夹排序linux命令?

    文件夹排序linux命令?,系统,数字,信息,工作,时间,命令,管理,设备,单位,工具,

    linux显示错误命令?

    linux显示错误命令?,信息,系统,电脑,状态,时间,环境,命令,搜狐,密码,异常,虚

    linux退出错误命令的?

    linux退出错误命令的?,系统,电脑,环境,命令,位置,管理,工具,设备,终端,进程,L

    linux打开文件夹命令?

    linux打开文件夹命令?,工作,系统,信息,命令,图片,文件,管理,发行,名字,名称,

    linux上清空文件命令?

    linux上清空文件命令?,系统,命令,文件夹,名字,档案,文件,目录,方法,终端,指

    linux中历史命令文件?

    linux中历史命令文件?,系统,地址,信息,数字,时间,命令,数据,环境,历史,文件,l