2008-12-28 16 views
7

我已經開發了繪製一些形狀(主要是線)的應用程序,現在我需要能夠將草圖存儲到一個文件,我知道德爾福已建立在對象持久性的例程,但我從來沒有用過它。德爾菲對象的持久性,什麼是最好的方式

誰能告訴我可以反對的持久使用,如果我有堅持有也(將被存儲到)其他對象的引用,我已經TLINE對象至極可以連接到其他TLINE對象等

對象

使用此功能或編寫自定義過程來存儲/從文件讀取對象會更好嗎?

THX

回答

2

過去我使用的一種方法是將我的對象屬性存儲在XML文件中,編寫一個自定義的「保存」例程,該例程添加到傳遞的IXMLNode,以及從傳遞的IXMLNode中讀取的新構造函數。我將組件存儲爲一個節點,並將屬性存儲爲屬性(除非屬性是另一個對象,那麼它將是一個子節點)。

我相信在Delphi Jedi項目中會有一些例程可以處理組件流,但是我並沒有直接使用它們,因爲我的大部分XML流都是手工完成的,因爲我的對象非常簡單並且可以只有少數幾個屬性渲染。

4

內置的對象持久性是主要設計用於流媒體組件使用的DFM,你需要做的,以保存草圖工作不會從該機制中受益非常多。

我認爲你會更好地提出一個自定義方案。

2

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

它可以讓你保存對象和列表到xml,csv,數據庫等。它自動處理子對象。

如果你有興趣,使用svn版本,而不是sourceforge下載,因爲它有更多的功能(包括部分D 2009支持)。

2

你也可以使用從java知道的着名hibernate。

Delphi的端口,你可以在這裏找到: dHibernate

1

JSON是存儲對象的新和非常緊湊的方式。 Delphi有兩個庫可用:SuperObjectlkJSON

p.s. http://www.delphi3000.com/似乎被列入黑名單(攻擊網站警報)

+0

Delphi 2010爲JSON和Datasnap增加了幾個單元,但是你可以不用datasnap。 – 2010-03-11 20:54:35