一、INI文件的結(jié)構(gòu):
; 注釋
[小節(jié)名]
關(guān)鍵字=值
INI文件允許有多個(gè)小節(jié),每個(gè)小節(jié)又允許有多個(gè)關(guān)鍵字, “=”后面是該關(guān)鍵字的值。
值的類型有三種:字符串、整型數(shù)值和布爾值。其中字符串存貯在INI文件中時(shí)沒有引號(hào),布爾真值用1表示,布爾假值用0表示。
注釋以分號(hào)“;”開頭。
二、定義
1、在Interface的Uses節(jié)增加IniFiles;
2、在Var變量定義部分增加一行:
myinifile:Tinifile;
然后,就可以對(duì)變量myinifile進(jìn)行創(chuàng)建、打開、讀取、寫入等操作了。
三、打開INI文件
Filename:=ExtractFilePath(Paramstr(0))+’program.ini’;
myinifile:=Tinifile.Create(filename);
四、讀取關(guān)鍵字的值
針對(duì)INI文件支持的字符串、整型數(shù)值、布爾值三種數(shù)據(jù)類型,TINIfiles類提供了三種不同的對(duì)象方法來讀取INI文件中關(guān)鍵字的值。
vs:=myinifile.Readstring(’小節(jié)名’,’關(guān)鍵字’,缺省值); string類型
vi:=myinifile.Readinteger(’小節(jié)名’,’關(guān)鍵字’,缺省值);integer類型
vb:=myinifile.Readbool(’小節(jié)名’,’關(guān)鍵字’,缺省值); boolean類型
五、寫入INI文件
myinifile.writestring(’小節(jié)名’,’關(guān)鍵字’,變量或字符串值); string類型
myinifile.writeinteger(’小節(jié)名’,’關(guān)鍵字’,變量或整型數(shù)值);integer類
myinifile.writebool(’小節(jié)名’,’關(guān)鍵字’,變量或True或False);boolean類型
當(dāng)這個(gè)INI文件不存在時(shí),上面的語句還會(huì)自動(dòng)創(chuàng)建該INI文件。
六、刪除關(guān)鍵字
myinifile.DeleteKey(’小節(jié)名’,’關(guān)鍵字’);
七、小節(jié)操作
增加一個(gè)小節(jié)可用寫入的方法來完成,刪除一個(gè)小節(jié)可用下面的對(duì)象方法:myinifile.EraseSection(’小節(jié)名’);另外Tinifile類還提供了三種對(duì)象方法來對(duì)小節(jié)進(jìn)行操作:
myinifile.readsection(’小節(jié)名’,TStrings變量);
可將指定小節(jié)中的所有關(guān)鍵字名讀取至一個(gè)字符串列表變量中;
myinifile.readsections(TStrings變量);
可將INI文件中所有小節(jié)名讀取至一個(gè)字符串列表變量中去。
myinifile.readsectionvalues(’小節(jié)名’,TStrings變量);
可將INI文件中指定小節(jié)的所有行(包括關(guān)鍵字、=、值)讀取至一個(gè)字符串列表變量中去。
八、釋放
在適當(dāng)?shù)奈恢糜孟旅娴恼Z句釋放myinifile:
myinifile.distory;
九 Delphi內(nèi)置函數(shù)總結(jié)
利用Windows API函數(shù)WritePrivateProfileString 和GetPrivateProfileString可對(duì).INI文件進(jìn)行讀寫操作。其實(shí),對(duì).INI文件的讀寫完全可以利用Delphi的內(nèi)置函數(shù)來實(shí)現(xiàn)。下面就介紹一些對(duì).INI文件讀寫時(shí)相關(guān)的類及其屬性方法。
1、TIniFile對(duì)象
以Delphi中,定義了一個(gè)TIniFile對(duì)象,將.INI文件封裝在其中,并提供一些方法,專門用來對(duì)INI文件進(jìn)行讀寫操作。如果在程序中要用到TIniFile類或其方法屬性,就必須在程序單元的uses語句中手工加入對(duì)IniFiles單元的引用。
2、Create方法
該方法用來創(chuàng)建一個(gè)處理INI文件的TIniFile類型實(shí)例。
方法聲明:constructor Create(const FileName:string);
參數(shù)說明:FileName指明待創(chuàng)建的INI文件的文件名;
注釋:在使用TIniFile對(duì)象之前,必須先用此方法創(chuàng)建一個(gè)INI文件的實(shí)例。FileName中可以包含路徑名,缺省時(shí)為Windows所在目錄(一般就是C:windows,對(duì)于Windows NT來說,則一般是c:winnt)。用Create方法創(chuàng)建的實(shí)例,在使用完之后,調(diào)用Free方法釋放內(nèi)存。
3、ReadSection方法
該方法從INI文件中讀出指定段的所有子鍵名,并存入Strings參數(shù)指定的字符串列表對(duì)象中。
方法聲明:procedure ReadSection(const Section:string; Strings:TStrings);
參數(shù)說明:Section指明要讀取段的段名;
Strings指明存放子鍵名的字符串列表;
注釋:ReadSection方法僅讀入指定段的所有子鍵名,但不讀入子鍵的值。
4、ReadSections方法
該方法從INI文件中讀取所有段名,并存入Strings參數(shù)指定的字符中列表中。
方法聲明:procedure ReadSections(Strings:TStrings);
參數(shù)說明:Strings參數(shù)指明存放段名的字符串列表;
注釋:ReadSections方法將INI文件中所有段的段名讀出,存入一指定的字符串列表中,此字符串列表可以直接使用某個(gè)列表框的Items屬性。
5、ReadSectionValues方法
該方法從INI文件中讀入指定段的所有子鍵名及其鍵值,并存入Strings參數(shù)指定的字符串列表中。
方法聲明:procedure ReadSectionValues(const Section:String; Strings:TStrings);
參數(shù)說明:Section指明要讀取段的段名;
Strings指明存放段名的字符串列表;
注釋:ReadSectionValues方法與ReadSection方法的區(qū)別在于后者僅讀入子鍵名,面前者除了讀取子鍵名之外,還讀取該子鍵對(duì)應(yīng)的鍵值。讀入的子鍵名及鍵值在字符串列表中的存放方法與在文件中的顯示方法一致,即"Key=Value"形式。
6、EraseSection方法
該方法刪除INI文件中指定的一個(gè)整段。
方法聲明:procedure EraseSection(const Section:string);
參數(shù)說明:Section指明待刪除段的段名;
注釋:EraseSection方法不僅刪除指定段的段名,面且同時(shí)將該段的所有子鍵及鍵值刪除。
7、DeleteKey方法
該方法刪除指定段中的某個(gè)指定的子鍵。
方法聲明:procedure DeleteKey(const Section,Key:string);
參數(shù)說明:Section指明待刪除子鍵據(jù)段的段名;
Key指明待刪除子鍵的鍵名;
注釋:DeleteKey方法刪除整個(gè)子鍵(包括鍵名和鍵值),也就是刪除該子鍵所在的一行。
8、ReadBool方法
該方法讀取指定段的某個(gè)子鍵的布爾值。
方法聲明:function ReadBool(const Section,Key:string;Default:Boolean):Boolean;
參數(shù)說明:Section指明待讀子鍵所在段的段名;
Key指明待讀子鍵的鍵名;
Default參數(shù)指明缺省時(shí)的返回值。
注釋:ReadBool方法用于讀取一個(gè)子鍵的布爾型值,當(dāng)鍵值為"1"時(shí),返回True,鍵值為"0"時(shí),返回False.
9、WriteBool方法
該方法向指定段的某個(gè)子鍵寫入布爾值。
方法聲明:procedure WriteBool(const Section, Key:string; Value:Boolean);
參數(shù)說明:Senction指明待寫入子鍵所在段的段名;
Key參數(shù)指明待寫入值的子鍵鍵名;
Value指明待寫入的布爾值;
注釋:WriteBool 方法用于寫入一個(gè)子鍵的布爾值,當(dāng)Value為"True"時(shí),寫入"1"。Value為"Flase"時(shí),寫入"0"。若在寫入時(shí),指定的段或鍵名不存在,則自動(dòng)創(chuàng)建該段和鍵名。
10、ReadInteger方法
該方法讀取指定段的某個(gè)子鍵的整型值。
方法聲明:function ReadInteger(const Section,Key:string; Default:longint):longint;
注釋:此方法與ReadBool方法類似,只是變量類型不同。
11、WriteInteger方法
該方法向指寫段的某個(gè)子鍵寫放整型值。
方法聲明:procedure WriteInteger(const Section,Key:string; Value:longint);
注釋:此方法與WriteBool方法類似,只是變量灰型不同。
12、ReadString方法
該方法讀取指定段的某個(gè)子鍵的字符串型 值。
方法聲明:function ReadString(const Section,Key:string; Default:string):string;
注釋;此方法與ReadBool方法類似,只是變量類型不同。
13、WriteString方法
該方法向指寫段的某個(gè)子鍵寫入整型值。
方法聲明:procedure WriteString(const Section,Key:string; Value:string);
注釋:此方法與WriteBool方法類似,只是變量類型不同。
14、FileName屬性
該屬性指明被封裝在TIniFile對(duì)象中的INI文件的文件名。
屬性聲明:property FileName:string;
注釋:FileName屬性是一個(gè)運(yùn)行時(shí)的只讀屬性。
由一面的介紹,我們可以看到,強(qiáng)大的Delphi對(duì)INI文件的支持是非常全面的。我們?cè)诰帉懮婕按祟惒僮鞯某绦驎r(shí),幾乎無需使用Windows API函數(shù)
聯(lián)系客服