2012-11-16 35 views
3

我想在Delphi項目中存儲和加載各種程序數據。這些數據的範圍從簡單的字符串到更復雜的循環配置對象數據。在Delphi中存儲配置數據有哪些選項?

衆所周知,ini文件提供了一種快速簡單的方法來存儲程序數據,但僅限於鍵值表示。

當涉及到這樣的需求時,XML通常是選擇的武器,但我想知道是否有XML的替代方案。

最近我發現superobject爲Delphi,這似乎比XML更容易處理。有沒有什麼可以說對這種「非網絡任務」使用JSON?

您是否知道在Delphi中支持純文本(如ini,xml,json)數據存儲和加載的其他選項?

+1

我個人使用YAML,但沒有現成的解析器/發射器。否則,你已經列出了主要候選人。 –

+0

我個人認爲XML是配置數據最具表現力的方法。好處是您可以輕鬆編輯XML文件。爲了達到這個目的,我創建了自己的xml對象/對象到xml流庫... – whosrdaddy

+1

如果您從TComponent派生您的TConfig對象,那麼您還可以使用內置流的VCL(同時使用可讀的格式)作爲二進制)機制。 – iamjoosy

回答

6

事實上,你選擇哪種存儲格式並不重要(ini,xml,json等等)。構建一個適合所有需求的抽象配置類,然後考慮具體的類和具體的存儲格式,並決定易於實現和可讀性。

在某些情況下,您還希望具有不同的配置方面(全球,機器,用戶)。

使用您的配置類,您可以輕鬆地將它們混合在一起(如果不是用戶定義,則使用全局),也可以混合存儲格式(數據庫的global-config,註冊表的機器配置,文件的user-config)。

2

好老INI文件爲我工作的偉大,結合內置的TIniFileTMemIniFile類的IniFiles單元

的INI文件的好處;

  1. 非二進制。
  2. 比註冊表設置更容易從機器移動到機器。
  3. 易於檢查和查看。
  4. 與XML,它的簡單和人類可讀

  5. INI文件是很容易通過手或工具來修改和幾乎是防彈的,而這很容易使一個畸形的JSON或XML是完全不可讀的,這是很難做到比INI文件的「損壞一個部分」更多。簡單勝利。

缺點:

  1. 與XML和註冊表它或多或少的 「兩級」,部分物品。

  2. TMemIniFile不以任何可控方式排列結果。我經常希望我可以控制我的ini文件中的項目順序,如果它們是由人類生成的,我希望保存順序,並且TMemIniFile不保存順序,因此我發現我不喜歡TMemIniFile愛普通老TIniFile

+0

如果你不喜歡TMemIniFile,你可以實現你自己的InMemory CustomIniFile。使用SubSections可以使它更接近XML和JSON。 –

+0

... :-)雖然標點符號少了很多。 –

相關問題