GetPrivateProfileString();
GetPrivateProfileInt();
WriteprivateProfileInt(); 讀寫ini 檔案
CWinApp::GetProfileInt()一類的函數
或者
UINT GetPrivateProfileInt(
LPCTSTR lpAppName, // section name
LPCTSTR lpKeyName, // key name
INT nDefault, // return value if key name not found
LPCTSTR lpFileName // initialization file name
);
讀取指定的配置檔案,lpFileName是配置檔案名
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // 你定義的段
LPCTSTR lpKeyName, // 你的鍵名
LPCTSTR lpDefault, // 沒有鍵值時的預設值
LPTSTR lpReturnedString, // char buff[xx]
DWORD nSize, // xxx
LPCTSTR lpFileName // 配置檔案路徑(完整路徑)
);
WritePrivateProfileString:和上面的差不多,如果将 Private 去掉,可以不加路徑(隻寫檔案名),
函數自動到windows的預設路徑搜尋檔案名
-----------------------------------------------------------------------------------------------------------------------
給你些提示:自己看看吧:
建立INI檔案:
var ini : tinifile;
ini := tinifile.create('filename.ini');
ini.writesring('key','dfj','valre);//如果檔案不存在則建立,存在就打開檔案在裡面寫
從.INI檔案中擷取字元串
var
strResult:pchar;
begin
GetPrivateProfileString(
'windows', // []中标題的名字
'NullPort', // =号前的名字
'NIL', // 如果沒有找到字元串時,傳回的預設值
strResult, //存放取得字元
100, //取得字元的允許最大長度
'c:\forwin95\win.ini' // 調用的檔案名
);
edit1.text:=strResult; //顯示取得字元串
從.INI檔案中擷取整數
edit1.text:=inttostr(GetPrivateProfileInt(
'intl', // []中标題的名字
'iCountry', // =号前的名字
0,// 如果沒有找到整數時,傳回的預設值
'c:\forwin95\win.ini' // 調用的檔案名
));
向.INI檔案寫入字元串
WritePrivateProfileString(
'windows', // []中标題的名字
'load', // 要寫入“=”号前的字元串
'accca', //要寫入的資料
'c:\forwin95\win.ini' // 調用的檔案名
);
向.INI檔案寫入整數
WritePrivateProfileSection(
'windows', // []中标題的名字
'read=100', // 要寫入的資料
'c:\forwin95\win.ini' // 調用的檔案名
);
上面的方法是調用API函數,下面介紹另一種不用API從.INI檔案中擷取字元的方法
var MyIni: TIniFile;
begin
MyIni := TIniFile.Create('WIN.INI');//調用的檔案名
edit1.text:=MyIni.ReadString('Desktop', 'Wallpaper', '');//取得字元
end;
向.INI檔案中寫入字元的方法
var MyIni: TIniFile;
begin
MyIni := TIniFile.Create('WIN.INI');//調用的檔案名
DelphiIni.WriteString('Desktop', 'Wallpaper', 'c:\a.bmp');
end;
增加一條:用完INI檔案後最好将其釋放(MyIni.Free; )
關于ini的說明和學習
===========================
一、有必要了解INI檔案的結構:
;注釋
[小節名]
關鍵字=值
...
INI檔案允許有多個小節,每個小節又允許有多個關鍵字,“=”後面是該關鍵字的值。
值的類型有三種:字元串、整型數值和布爾值。其中字元串存貯在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檔案支援的字元串、整型數值、布爾值三種資料類型,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檔案。
附源程式清單
unitUnit1;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,
Controls,Forms,Dialogs,inifiles,StdCtrls,ExtCtrls;
type
TForm1=class(TForm)
Edit1:TEdit;
CheckBox1:TCheckBox;
Edit2:TEdit;
Label1:TLabel;
Label2:TLabel;
Timer1:TTimer;
Label3:TLabel;
procedureFormCreate(Sender:TObject);
procedureFormDestroy(Sender:TObject);
procedureTimer1Timer(Sender:TObject);
private
{Privatedeclarations}
public
{Publicdeclarations}
end;
var
Form1:TForm1;
implementation
var
myinifile:TInifile;
{$R*.DFM}
procedureTForm1.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;
procedureTForm1.FormDestroy(Sender:TObject);
begin
myinifile.writestring(程式參數,使用者名稱,edit1.Text);
myinifile.writeinteger(程式參數,已運作時間,
strtoint(edit2.text));
myinifile.writebool(程式參數,是否正式使用者,
checkbox1.Checked);
myinifile.Destroy;
end;
procedureTForm1.Timer1Timer(Sender:TObject);
begin
edit2.Text:=inttostr(strtoint(edit2.text)+1);
end;
end.