用 Delphi 开发 APP 时程序参数的设置修改以及保存方法

51 篇文章 6 订阅
44 篇文章 0 订阅

做一个程序,总会有一些参数,是需要在运行时,让用户去选择设置的。用户设置完成后,需要保存,这样下次程序启动后,工作参数就是上次用户设置的参数。

传统的 Windows 底下,最常用的方式,是采用 ini 文件来保存参数。然后通过读写 TIniFile 来获取参数,或者将参数写入 ini 文件。不过用 ini 文件,采用 TIniFile 来打开 ini 文件,程序员需要写很多读写 TIniFile 的代码,逐个参数读出来,给界面元素赋值。用户修改界面元素后,要逐个从界面元素读出来,写入 TIniFile,然后将 TIniFile 保存为 ini 文件。这个过程,需要写很多代码。

另外一种方式,是采用数据库的方式。做一个数据库的表,这个表的字段,就是需要的参数。然后所有对参数的读写,采用数据库的操作。用户界面操作的界面元素,采用数据绑定的方式,基本上不用写代码,就能完成界面元素对参数值的显示,以及用户操作修改参数后自动写入数据库的工作。

不过,用数据库的麻烦是,如果修改了参数,比如增加了一条参数,则需要去修改数据库的表结构,导致程序里面很多地方都需要跟着做修改,会比较麻烦。而且要查看数据库的内容也比较麻烦,需要数据库工具。

还有一种方式,是将所有需要参数,采用对象的属性的方式。也就是做一个参数类,各条参数是这个类的属性。采用数据绑定的方式,将界面元素绑定到参数对象对应的属性上面。然后,这个对象的属性值,从哪里获得?有两种办法:

1. 采用 Json 的方式,将对象序列化为 JSON 字符串,然后将字符串保存为本地文本文件。加载参数时,则反序列化 JSON 字符串为对象。但 Delphi 自己带的 JSON 序列化对象的代码,不稳定,有一些问题。并且,在 D10.2.1 底下能工作的 JSON 序列化对象的代码,到 D10.3 底下居然编译都会出错。因此看起来 Delphi 自己带的 JSON 库还是有问题。当然可以考虑采用一些第三方开源的 JSON 库。采用第三方的库同样存在当 Delphi 本身升级后,那个库有没有跟着升级的问题。

2. 简单实用稳定的办法:将参数采用 TStringList 的方式来存储。一个参数就是这个 StringList 里面的一条 Key=Value 的字符串。参数对象的参数属性的 read 和 write 方法里面,就是从这个 StringList 读取 Key=Value 的值,或者写入一条 Key=Value 的值。TStringList 在 Delphi 里存在很久了,也算是一个简单的类,基本上不会跟着 Delphi 的升级而变化,写好的代码无需因为 Delphi 的升级而需要修改。再次情况下,再将对象属性绑定到界面元素,则基本上无需写什么代码,就能将参数文件的值,逐条显示到界面元素上,也能将用户操作界面元素修改的参数,自动化地写回参数文件。因此这是一个比较不错的方法。

至于,如何将一个我们自己构造的类在运行期创建的对象,采用 DataBinding 的方式绑定到界面元素上,请参考俺的这篇博客:

 

Delphi 利用 LiveBinding 将对象绑定到界面元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值