如何在Delphi中将对象保存到文件中

8

在Java中,可以将可序列化对象保存到文件中,并从该文件加载对象。在Delphi中是否也可以这样做?如果可以,如何操作?


2
在Java中,任何对象都不可能实现序列化:对象的类必须声明它实现Serializable接口(但这只是一个标记接口,没有任何方法)。好处是Java默认情况下序列化所有对象属性,无论其访问修饰符如何(不需要“DIY” RTTI编码)。 - mjn
已经编辑了我的问题 - rajeemcariazo
4个回答

6
如果你问“我们能在Delphi中做这个吗?”-答案是:是的。我猜你想知道,如何在Delphi中实现这个?好吧,这取决于你想要序列化什么:
如果你想序列化
- 你自己的数据对象,那么你可以编写自己的saveTo/loadFrom函数 - 组件,则可以使用内置的组件流系统 - 任何未知对象,则需要一些RTTI技术,并且对象必须发布其可序列化属性

3
只有在仍然使用“旧风格”RTTI时才需要属性具有已发布的可见性。从D2010开始,扩展的RTTI不需要属性具有已发布的可见性就能枚举它们。此外,它可以枚举比“只是”属性更多的内容。 - Marjan Venema


3
安德烈链接的第一篇文章似乎(也许我看得太快了)使用“旧”的 D2010 之前的样式 RTTI(运行时类型信息),这取决于属性具有已发布的可见性才能枚举它们。
截至 D2010 Delphi,它拥有全新的扩展 RTTI(建立在旧版之上),不需要已发布的可见性,可以做比枚举属性更多的事情。如安德烈链接的第二篇文章所述,DeHL 使用新的 RTTI,如果您正在寻找库,我也推荐使用此库。
如果您喜欢自己构建,您可以查看 Robert Love 关于使用新 RTTI 进行 XML 序列化的文章:http://robstechcorner.blogspot.com/2009/10/xml-serialization-basic-usage.html

Robert Love还提供了有关RTTI文章的很好概述: http://robstechcorner.blogspot.com/2009/09/so-what-is-rtti-rtti-is-acronym-for-run.html

如果想了解如何使用新样式的RTTI,可以参考以下内容:

Delphi新RTTI的实际用途-属性、值我为什么要关注Delphi中的RTTI?


2
NativeXML具有以XML格式存储/检索对象的能力,这使得您可以比RTTI方法更加灵活地操作。快速简便地操作XML文档,并具有保存/加载持久对象的附加功能。请参考NativeXML网站

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接