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