INI檔案在系統配置及應用程式參數保存與設定方面,具有很重要的作用,所以可視化的程式設計一族,如VB、VC、VFP、Delphi等都提供了讀取INI檔案的方法,其中Delphi中操作INI文件,最為簡潔,這是因為Delphi提供了一個TInifile類,使我們可以非常靈活的處理INI文件一. INI文件的結構[小節名稱]ini檔案關鍵字1=值1 關鍵子2=值2INI檔案允許有多個小節,每個小節允許有多個關鍵字,「=」後面是該關鍵字的值。值的類型有三種:字串、整數數值和布林值。其中字串存貯在INI檔時沒有引號,布林真值以1表示,布林假值以0表示。
二、定義
1、 在Interface的Uses節增加IniFiles;
2、 在Var變數定義部分增加一行: myinifile:Tinifile;
定義類別的一個實例。然後,就可以對變數myinifile進行建立、開啟、讀取、寫入等操作了。
三、開啟INI文件
myinifile:=Tinifile.create(PRogram.ini);
上面這一行語句將會為變數myinifile與特定的檔案program.ini建立聯繫,然後,就可以透過變數myinifile,來讀取寫入program.ini檔案中的關鍵字的值了。 值得注意的是,如果括號中的檔案名稱沒有指明路徑的話,那麼這個Program.ini檔案會儲存在Windows目錄中,把Program.ini檔案儲存在應用程式目前目錄中的方法是:為其指定完整的路徑及檔名。下面的兩個語句可以完成這個功能: Filename:=ExtractFilePath(Paramstr(0))+program.ini;myinifile:=Tinifile.Create(filename);
五、寫入INI文件
同樣的,TInifile類別也提供了三種不同的物件方法,向INI檔案寫入字串、整數數及布林類型的關鍵字。
myinifile.writestring(小節名稱,關鍵字,變數或字串值);
myinifile.writeinteger(小節名稱,關鍵字,變數或整數數值);
myinifile.writebool(小節名,關鍵字,變數或True或False);
當這個INI檔案不存在時,上面的語句也會自動建立該INI檔案。
六、刪除關鍵字
除了可用寫入方法增加一個關鍵字,Tinifile類別還提供了一個刪除關鍵字的物件方法:
myinifile.DeleteKey(小節名稱,關鍵字);
七、小節操作
增加一個小節可用寫入的方法來完成,刪除一個小節可用下面的物件方法:
myinifile.EraseSection(小節名);
另外Tinifile類別也提供了三種物件方法來對小節進行操作: myinifile.readsection(小節名稱,TStrings變數); 可將指定小節中的所有關鍵字名讀取至一個字串清單變數中; myinifile.readsections (TStrings變數);可將INI檔案中所有小節名讀取至一個字串清單變數中去。 myinifile.readsectionvalues(小節名,TStrings變數);可將INI檔案中指定小節的所有行(包括關鍵字、=、值)讀取至一個字串清單變數中去。
八、釋放
在適當的位置用下面的語句釋放myinifile:
myinifile.distory;
下面是具體例子。原始碼如下。建立了一個myini.ini文件,有一個名為newini的小節,有3個關鍵字「使用者名稱」「已運行時間」「是否正式使用者」。運行效果,可以在edit1裡邊填入「使用者名稱」;edit2顯示時間,不可以改變數值;checkbox1透過打勾,保存時間和「使用者名稱」進入myini.ini檔案裡邊,重新開啟應用程式時,顯示的時保存下來的時間和填入的“用戶名稱”,如果在myini.ini檔案裡邊修改,效果和在程式運行過程中修改時一樣的。
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,inifiles, StdCtrls, ExtCtrls; {呼叫inifiles 類別}type TForm1 = class(TForm) Labelabel1: TLabel Label1; TLabel; Edit1: TEdit; Edit2: TEdit; Timer1: TTimer; CheckBox1: TCheckBox; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } publiclarations } Public; TForm1;implementationvarmyinifile:TInifile;{定義一個類別的實例}{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);varfilename:string;begin{下面兩行的書寫形式,在應用程式的路徑下建立ini檔案}filename:=ExtractFilePath(paramstr(0))+'myini.ini';myinifile:=TInifile.Create( filename);edit1.Text:=myinifile.ReadString(' newini','用戶名','胡長浩');edit2.text:=inttostr(myinifile.readinteger('newini','已運行時間',0));checkbox1.Checked:=myinifile.readbool('newini' ,'是否正式使用者',False);{newini是小節名字,中間欄位是關鍵字的名字,第三個欄位是缺省值。當myini.ini不存在時,上面的語句會自動建立這個文件,上邊幾行裡的引號是單引號}end;procedure TForm1.FormDestroy(Sender: TObject);begin myinifile.writestring('newini','使用者名稱',edit1.Text);myinifile.writeinteger('newini','已運行時間',strtoint(edit2.text));myinifile.writebool('newini','是否正式用戶',checkbox1.Checked);myinifile.Destroy;end;procedure TForm1.Timer1Timer(Sender: TObject);begin edit2.Text:=inttostr(strtoint(edit2.text)+1);end;end.
ini文件