【问题标题】:What options exist to store configuration data in Delphi?在 Delphi 中存储配置数据有哪些选择?
【发布时间】:2012-11-16 11:10:06
【问题描述】:

我想在 Delphi 项目中存储和加载各种程序数据。这些数据范围从简单的字符串到更复杂的重复配置对象数据。

众所周知,ini 文件提供了一种快速简便的方式来存储程序数据,但仅限于键值表示。

当涉及到这样的需求时,XML 通常是首选的武器,但我想知道是否有 XML 的替代品。

最近我发现superobject for Delphi 似乎比 XML 更容易处理。对于这种“非网络任务”使用 JSON 有什么要说的吗?

您是否知道在 Delphi 中支持数据存储和以纯文本(如 ini、xml、json)加载的其他选项?

【问题讨论】:

  • 我个人使用 YAML,但没有现成的解析器/发射器。否则,您已经列出了主要候选人。
  • 我个人认为 XML 是配置数据最有表现力的方法。好处是您可以轻松地编辑 XML 文件。为此,我制作了自己的 xml to object/ object to xml 流媒体库...
  • 如果你从 TComponent 派生你的 TConfig 对象,那么你也可以使用 VCL 内置的流(人类可读格式和二进制)机制。
  • @whosrdaddy 我个人认为人类阅读和编辑 XML 文件是一种可怕的体验..... ;-)
  • 事实上,您选择哪种存储格式(ini、xml、json 等)并不重要。构建一个满足您所有需求的抽象配置类,然后考虑具体类和具体存储格式,并根据实现的难易程度和人类可读性来决定

标签: delphi storage


【解决方案1】:

事实上,您选择哪种存储格式(ini、xml、json 等)并不重要。构建一个满足您所有需求的抽象配置类,然后考虑具体类和具体存储格式,并根据实现的难易程度和人类可读性来决定

在某些情况下,您还希望拥有不同的配置方面(全局、机器、用户)。

使用您的配置类,您可以轻松地将它们混合在一起(如果不是用户定义,则使用全局),还可以混合存储格式(数据库中的全局配置、注册表中的机器配置、文件中的用户配置)。

【讨论】:

    【解决方案2】:

    旧的 INI 文件对我来说非常有用,结合 IniFiles 单元中的内置 TIniFileTMemIniFile

    INI 文件的好处;

    1. 不是二进制的。
    2. 比注册表设置更容易在机器之间移动。
    3. 易于检查和查看。
    4. 与 XML 不同,它简单易读

    5. INI 文件很容易手动或工具修改,几乎是防弹的,而制作格式错误的 JSON 或 XML 很容易,完全不可读,除了“损坏一个部分”之外,很难做更多的事情。一个INI文件。简单取胜。

    缺点:

    1. 与 XML 和 Registry 不同,它或多或少是“两个级别”,即部分和项。

    2. TMemIniFile 不会以任何可控的方式对结果进行排序。我经常希望我可以控制我的ini文件中项目的顺序,如果它们是由人类生成的,我希望保留顺序,而 TMemIniFile 不保留顺序,因此我发现我不喜欢TMemIniFile就像爱朴素的老TIniFile

    【讨论】:

    • 如果您不喜欢 TMemIniFile,您可以实现自己的 InMemory CustomIniFile。通过使用 SubSection,它更接近于 XML 和 JSON。
    • ... :-) 虽然标点符号少了很多。
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 2010-10-05
    相关资源
    最近更新 更多