8

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

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

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

4

6 回答 6

5

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

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

于 2008-12-28T20:37:14.560 回答
3

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

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

于 2008-12-29T03:15:15.897 回答
3

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

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

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

于 2008-12-29T04:19:41.007 回答
2

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

您可以在这里找到的 delphi 端口: dHibernate

于 2009-01-03T00:32:12.357 回答
2

JSON是一种新的、非常紧凑的对象存储方式。Delphi 有两个库:SuperObjectlkJSON

于 2009-03-21T18:28:48.417 回答
1

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

于 2013-06-15T20:25:29.477 回答