實做一個應用,一般情況下,我們總要為之做一個配置文件,用來設置象數據庫聯接參數等信息,然后用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;//讀配置文件