我想在Delphi项目中存储和加载各种程序数据。此数据范围从简单字符串到更复杂的重复配置对象数据。
众所周知,ini文件提供了一种快速简便的方法来存储程序数据,但仅限于键值表示。
当涉及到这样的要求时,XML通常是首选武器,但我想知道是否有替代XML。
最近我发现Delphi的superobject似乎比XML容易处理。对于使用JSON进行这种“非网络任务”有什么可说的吗?
您是否了解在Delphi中支持数据存储和以纯文本加载的其他选项(如ini,xml,json)?
答案 0 :(得分:6)
实际上,选择哪种存储格式(ini,xml,json等)并不重要。构建一个适合您所有需求的抽象Configuration类,然后考虑具体的类和具体的存储格式,并决定实现的容易程度和人类的可读性
在某些情况下,您还希望拥有不同的配置方面(全局,机器,用户)。
使用您的配置类,您可以轻松地将它们混合在一起(如果不是用户定义则使用全局),还可以混合存储格式(来自DB的global-config,来自Registry的machine-config,来自文件的user-config)。
答案 1 :(得分:2)
好的旧INI
文件对我来说很有用,与TIniFile
单元中内置的TMemIniFile
和IniFiles
类相结合
INI文件的好处;
与XML不同,它简单且易于阅读
INI文件很容易通过手工或工具进行修改,并且几乎是防弹的,而很容易制作一个完全不可读的格式错误的JSON或XML,很难做到“损坏一个部分”一个INI文件。简单胜利。
缺点:
与XML和Registry不同,它或多或少是“两个级别”,部分和项目。
TMemIniFile
未按任何可控方式排序结果。我经常希望我可以控制我的ini文件中的项目顺序,如果它们是由人生成的,我希望保留顺序,并且TMemIniFile不保留顺序,因此我发现我不爱{{1}和爱平原TMemIniFile
一样多。