在BCB中有個TIniFile類,它提供了對INI檔案的操作,INI檔案一種通用的配置檔案格式它也象系統資料庫一樣分鍵和資料項,下面是一個INI配置檔案的内容,它有一個鍵LastConfig,在這個鍵下有一個資料項DefaultDit,在資料項後面就是這個資料項的值。
[LastConfig]
DefaultDir=E:/xxx
TIniFile類有幾個常用的方法給大家介紹一下:
__fastcall TIniFile(const AnsiString FileName) : Inifiles::TCustomIniFile(FileName) { }
這個方法建立一個INI對象,如果FileName指定的檔案名不存在則自動生成此檔案,FileName可以用全路徑,指定INI檔案的地點,如果隻有檔案名沒有路徑,這個函數将到Windows系統路徑下去打開或建立。(WIN9X是Windows目錄,NT和2000是WINNT目錄)
bool __fastcall SectionExists(const AnsiString Section);
這個方法判斷是否存在Section這個鍵。
virtual AnsiString __fastcall ReadString(const AnsiString Section, const AnsiString Ident, const AnsiString Default);
這個方法從INI檔案中讀取一個字元串,Section是指定的鍵,Ident是指定鍵下的資料項Default是如果這個項不存在的時候的預設值。
virtual void __fastcall WriteString(const AnsiString Section, const AnsiString Ident, const AnsiString Value);
這個方法是向INI檔案中寫入一個字元串,Senction是指定的鍵,Ident是指定的資料項,Value是要寫入的資料。同TRegistry一樣,TIniFile類還提供了讀取整型、布爾型,二進制等資料類型的讀寫方法,大家看看聯機幫助就可以了,用法基本一樣。下面就那上面的INI檔案為例來說明一下如何有INI檔案來儲存配置資訊和如何從INI檔案中讀取資料。
下面的例子是如何從一個INI檔案中讀取配置,此配置檔案儲存在應用程式的目錄下,如果沒有配置,則取程式所在路徑為預設值。
#include <inifiles.hpp>
void __fastcall ReadConfig ()
{
//讀取配置,
TIniFile * regKey;
AnsiString ExePath = ExtractFileName( ParamStr ( 0 ) );
regKey = new TIniFile ( ExePath + "TrimTxt.ini");
DefaultDir=regKey->ReadString("LastConfig","DefaultDir",ExePath );
delete regKey;
}
下面的例子說明如何将資訊寫入INI檔案
void __fastcall SaveConfig ()
{
TIniFile * regKey;
AnsiString ExePath = ExtractFileName( ParamStr ( 0 ) );
regKey = new TIniFile ( ExePath + "TrimTxt.ini");
regKey->WriteString ( "LastConfig", "DefaultDir" , DefaultDir );
delete regKey;
}
使用INI檔案儲存配置資訊是很友善的,它最大的優點就是使用者可以手工去就改它,它通常用來儲存一些不是至關重要的資料。它的缺點就是不适合儲存結構比較複雜的資料,而且檔案容易被破壞。