ini檔案在系統配置及應用程式引數儲存與設定方面,具有很重要的作用,所以視覺化的程式設計一族,如vb、vc、vfp、delphi等都提供了讀寫ini檔案的方法,其中delphi中操作ini檔案,最為簡潔,這是因為delphi6.0提供了乙個tinifile類,使我們可以非常靈活的處理ini檔案。
一、有必要了解ini檔案的結構:
;注釋
[小節名]
關鍵字=值
...
ini檔案允許有多個小節,每個小節又允許有多個關鍵字, 「=」後面是該關鍵字的值。
值的型別有三種:字串、整型數值和布林值。其中字串存貯在ini檔案中時沒有引號,布林真值用1表示,布林假值用0表示。
注釋以分號「;」開頭。
二、定義
1、在inte***ce的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檔案支援的字串、整型數值、布林值三種資料型別,tinifiles類提供了三種不同的物件方法來讀取ini檔案中關鍵字的值。
假設已定義變數vs、vi、vb分別為string、 integer、boolean型別。
vs:=myinifile.readstring(』小節名』,』關鍵字』,預設值);
vi:=myinifile.readinteger(』小節名』,』關鍵字』,預設值);
vb:=myinifile.readbool(』小節名』,』關鍵字』,預設值);
其中預設值為該ini檔案不存在該關鍵字時返回的預設值。
五、寫入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;
九、乙個例項
下面用乙個簡單的例子(如圖),演示了建立、讀取、存貯ini檔案的方法。myini.ini檔案中包含有「程式引數」小節,和使用者名稱(字串)、是否正式使用者(布林值)和已執行時間(整型值)三個關鍵字。程式在窗體建立讀取這些資料,並在窗體釋放時寫myini.ini檔案。
附源程式清單
unit unit1;
inte***ce
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs,inifiles, stdctrls, extctrls;
type
tform1 = class(tform)
edit1: tedit;
edit2: tedit;
checkbox1: tcheckbox;
timer1: ttimer;
procedure formcreate(sender: tobject);
procedure formdestroy(sender: tobject);
procedure timer1timer(sender: tobject);
private
public
end;
var
form1: tform1;
myinifile:tinifile;
implementation
procedure tform1.formcreate(sender: tobject);
var
filename:string;
begin
filename:=extractfilepath(paramstr(0))+ 'myini.ini ';
myinifile:=tinifile.create(filename);
edit1.text:= myinifile.readstring( '程式引數 ', '使用者名稱 ', '預設的使用者名稱 ');
edit2.text:= inttostr(myinifile.readinteger( '程式引數 ', '已執行時間 ',0));
checkbox1.checked:= myinifile.readbool( '程式引數 ', '是否正式使用者 ',false);
end;
procedure tform1.formdestroy(sender: tobject);
begin
myinifile.writestring( '程式引數 ', '使用者名稱 ',edit1.text);
myinifile.writeinteger( '程式引數 ', '已執行時間 ',strtoint(edit2.text));
myinifile.writebool( '程式引數 ', '是否正式使用者 ',checkbox1.checked);
myinifile.destroy;
end;
procedure tform1.timer1timer(sender: tobject);
begin
edit2.text:=inttostr(strtoint(edit2.text)+1);
end;
end.
INI檔案的操作
概述 在程式中經常要用到設定或者其他少量資料的存檔,以便程式在下一次執行的時候可以使用,比如說儲存本次程式執行時視窗的位置 大小 一些使用者設定的資料等等,在 dos 下程式設計的時候,我們一般自己產生乙個檔案,由自己把這些資料寫到檔案中,然後在下一次執行的時候再讀出來使用。在 win32 程式設計...
INI 檔案的操作
在程式中經常要用到設定或者其他少量資料的存檔,以便程式在下一次執行的時候可以使用,比如說儲存本次程式執行時視窗的位置 大小 一些使用者設定的資料等等,在 dos 下程式設計的時候,我們一般自己產生乙個檔案,由自己把這些資料寫到檔案中,然後在下一次執行的時候再讀出來使用。在 win32 程式設計中當然...
ini檔案操作
uses inifiles 寫入 varfilename string fileini tinifile begin filename extractfilepath paramstr 0 connect.ini fileini tinifile.create filename fileini.wr...