实做一个应用,一般情况下,我们总要为之做一个配置文件,用来设置象数据库联接参数等信息,然后用TIniFile或者注册表对象来读写。为此,kbmMW为我们带来更好用的方式,让代码维护起来更优雅。
如果你对kbmMW Configuration Framework一无所知,可以先看看译的博文,大体先了解一下工作原理与基本使用方法:Configuration REST easy with kbmMW #7以及窑洞洞主xalion写的使用kbmMWConfiguration 让 kbmmw smartservice 更聪明。
如果功课做完,接下来,就可以看看我在项目中实现自己的配置对象:
第一步,定义自己的配置对象类:
TConfigurableObject = class(TkbmMWConfigurableObject) private [kbmMW_Config('Host',mwcdReadWrite)] FHost: string; [kbmMW_Config('Host',mwcdReadWrite)] FPort: string; public property Host:string read FHost write FHost; property Port:string read FPort write FPort; end;
为了易读,上面代码做了简化,Host,指服务器的地址,Port指服务器的端口。
第二步,定义配置对象的存储:
在同一单元的initialization段,用如下代码实现。这里,我用的xml格式在执行文件同目录下保存xml文件,命名为config.xml。注意:这一步是可选择的,如果不处理,config对象会自动在执行文件当前目录生成xxxx_config.xml文件。
initialization Config.Storage:=TkbmMWXMLConfigurationStorage.Create(GetApplicationPath('config.xml'));//注意:这一步是可选择的,如果不处理,config对象会自动在执行文件当前目录生成xxxx_config.xml文件。
第三步,在同一单元的initialization段,注册TConfigurableObject,让config对象能够通过xml文件读写这个他。
initialization Config.Storage:=TkbmMWXMLConfigurationStorage.Create(GetApplicationPath('config.xml')); kbmMWRegisterKnownClass(TConfigurableObject);
第四步,使用自定义的配置对象TConfigurableObject。
在MainDatamodule单元中,声明一个类型为TConfigurableObject的对象,然后通过该对象的属性,就可以读取与设置配置文件了。
最后,还要注意其他的问题:
默认情况下,kbmMW Configuration Framework自动备份五次配置文件,如果不需要,按下面代码:
initialization Config.Storage:=TkbmMWXMLConfigurationStorage.Create(GetApplicationPath('config.xml')); Config.Storage.BackupMaxCount:=-1;//不生成备份文件.
全局的Config对象与配置对象的关系,这个我们也要知道,默认情况下,配置对象的Configuration属性,即指向Config,象上面的代码,就是这样的关系。知道了这个关系,我们就可以实现的配置对象的读写,有些时候,当我们修改了配置文件的属性,想立即写入配置文件,用下面的代码:
ConfigObject.Configuration.Storage.Save;
这看起来很啰嗦,作者为我们封装了一个方法:
ConfigObject.WriteConfig;//写配置文件内容。
同样,还有一个读方法:
ConfigObject.ReadConfig;//读配置文件