Delphi对象持久化,最好的方法是啥

Posted

技术标签:

【中文标题】Delphi对象持久化,最好的方法是啥【英文标题】:Delphi object persistence, what is the best wayDelphi对象持久化,最好的方法是什么 【发布时间】:2010-09-28 15:13:33 【问题描述】:

我已经开发了用于绘制一些形状(主要是线条)的应用程序,现在我需要能够将草图存储到文件中,我知道 delphi 已经内置了用于对象持久性的例程,但我从未使用过它。

如果我必须持久化还引用其他对象(将被存储到)的对象,有人可以告诉我可以使用对象持久性吗?我有可以连接到其他 TLine 对象等的 TLine 对象。

使用此功能或编写自定义过程来存储/读取文件到/从文件中更好吗?

【问题讨论】:

【参考方案1】:

内置对象持久性主要设计用于将组件流式传输到 dfm,您需要做的持久化草图的工作不会从该机制中受益匪浅。

我认为你最好提出一个自定义方案。

【讨论】:

【参考方案2】:

我过去使用的一种方法是将我的对象属性存储在一个 XML 文件中,编写一个自定义“保存”例程,该例程添加到传递的 IXMLNode,以及一个从传递的 IXMLNode 读取的新构造函数。我将组件存储为节点,将属性存储为属性(除非属性是另一个对象,否则它将是子节点)。

我相信 Delphi Jedi 项目中有一些例程可以为您处理组件流,但我没有直接使用它们,因为我的大部分 XML 流是手工完成的,因为我的对象非常简单并且可以渲染只有少数几个属性。

【讨论】:

【参考方案3】:

我使用 TI 对象持久性框架 (tiopf.com)。我在http://tiopf.sourceforge.net/Doc/overview/index.shtml 写了概述。

它将让您将对象和列表保存到 xml、csv、数据库等。它会自动处理子对象。

如果您有兴趣,请使用 svn 版本,而不是 sourceforge 下载,因为它具有更多功能(包括部分 D 2009 支持)。

【讨论】:

【参考方案4】:

你也可以使用java中著名的hibernate。

您可以在此处找到的 delphi 端口: dHibernate

【讨论】:

【参考方案5】:

JSON 是一种新的、非常紧凑的对象存储方式。 Delphi 提供了两个库:SuperObject 和 lkJSON。

【讨论】:

Delphi 2010 为 JSON 和 Datasnap 添加了一些单元,但您可以不使用 datasnap。【参考方案6】:

使用来自http://www.simdesign.nl/xml.html 的 NativeXML,我完成了从/向 XML 代码读取/写入 delphi 内存对象。非常好,非常简单,这里有演示:http://www.simdesign.nl/forum/download/file.php?id=236

【讨论】:

以上是关于Delphi对象持久化,最好的方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

在没有数据持久性的情况下,如何最好地在 Django 中压缩表单:最 Djangonic 的方法是啥? [关闭]

持久化java对象的最简单方法是啥?

用DELPHI的RTTI实现对象的XML持久化

ORM 如何在幕后工作?另外,在 Java 中拥有持久对象的最佳方法是啥?

delphi的对象如何序列化

知道 NSManagedObject 实例是新的并且尚未持久化的最简单方法是啥?