在Delphi中存储配置数据有哪些选择?

时间:2012-11-16 11:10:07

标签: delphi storage

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

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

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

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

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

2 个答案:

答案 0 :(得分:6)

实际上,选择哪种存储格式(ini,xml,json等)并不重要。构建一个适合您所有需求的抽象Configuration类,然后考虑具体的类和具体的存储格式,并决定实现的容易程度和人类的可读性

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

使用您的配置类,您可以轻松地将它们混合在一起(如果不是用户定义则使用全局),还可以混合存储格式(来自DB的global-config,来自Registry的machine-config,来自文件的user-config)。

答案 1 :(得分:2)

好的旧INI文件对我来说很有用,与TIniFile单元中内置的TMemIniFileIniFiles类相结合

INI文件的好处;

  1. 不是二元。
  2. 比注册表设置更容易从一台机器移动到另一台机器。
  3. 易于检查和查看。
  4. 与XML不同,它简单且易于阅读

  5. INI文件很容易通过手工或工具进行修改,并且几乎是防弹的,而很容易制作一个完全不可读的格式错误的JSON或XML,很难做到“损坏一个部分”一个INI文件。简单胜利。

  6. 缺点:

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

    2. TMemIniFile未按任何可控方式排序结果。我经常希望我可以控制我的ini文件中的项目顺序,如果它们是由人生成的,我希望保留顺序,并且TMemIniFile不保留顺序,因此我发现我不爱{{1}和爱平原TMemIniFile一样多。