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