6

有没有人在将组件序列化到文件中并将它们读回时遇到问题,特别是在组件供应商升级 VCL 组件的区域。例如,一个文件用 DelphiX 序列化,然后几年后用 delphiY 读回。序列化格式是否发生变化,如果发生变化,可以采取哪些措施来防止升级时在组件中读取错误。

4

3 回答 3

3

用于序列化已发布属性的内置 RTTI 系统容易受到组件更改的影响。只要将旧属性保留在新对象中,就可以管理前进。即,您保留属性界面,但如果您愿意,可以丢弃内容。倒退更糟 - 因为新版本保存的属性无法在旧版本加载中打开,这将是一个问题。

有一些组件/库(http://www.torry.net/quicksearchd.php?String=RTTI&Title=Yes)可以添加 XML 格式的序列化,这可能会有所帮助,因为您可以选择跳过不需要的内容知道。

您仍然需要注意如何设计发布的内容,并且可能应该找到一种方法来“忽略但传播”您当前版本不理解的内容。这将允许您以较新的格式打开和更改文件,同时尝试保留较新的属性,而不是剥离它们。

于 2008-09-16T16:36:10.360 回答
0

格式肯定会发生变化,因为供应商将为其组件添加功能。序列化只是循环所有已发布的属性并将它们保存到流中。当它们被读回时,从流中读取的每个属性都将被设置回组件。如果该属性不再存在,那么您就有问题了。除了一些基本的异常处理之外,我认为您对此无能为力。

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

于 2008-09-16T16:05:41.977 回答
0

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

于 2008-09-16T16:28:11.987 回答