1. 程式人生 > >Delphi對ini檔案的操作

Delphi對ini檔案的操作

一、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.Destroy;
 
九 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函式
---------------------