ini檔案(xxx.ini),就是系統的設定檔,用來儲存系統的一些配置資訊。
使用INI設定檔
在BCB中有個TIniFile類,它提供了對INI檔案的操作,INI檔案一種通用的設定檔格式它也象註冊表一樣 分鍵和資料項目,下面是一個INI設定檔的內容,它有一個鍵LastConfig, 在這個鍵下有一個資料項目DefaultDit,在資料項目後面就是這個資料項目的值。
[LastConfig]
DefaultDir=E:\xxx
TIniFile類有幾個常用的方法給大家介紹一下:
__fastcallTIniFile(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檔案儲存配置資訊是很方便的,它最大的優點就是使用者可以手工去就改它,它通常用來儲存一些不是至關重要的資料。它的缺點就是不適合儲存結構比較複雜的資料,而且檔案容易被破壞。
http://blog.hehehehehe.cn/a/8454.htm
MP3用到的函數及解釋:
(1)更改指定檔案的副檔名:
function ChangeFileExt(const FileName, Extension: string): string;
//第一個參數為要修改的檔案名稱,可以帶路徑
//第二個參數為修改後的尾碼名
//該函數返回修改後的檔案名稱
eg: ChangeFileExt( mp3.exe, config.cfg) ===>返回 mp3.cfg
比如:s:=changefileext('f:\123.txt','.ini');
showmessage(s);//f:\123.ini