delphi INI文件的结构及操作方法

用Windows API函数WritePrivateProfileString 和GetPrivateProfileString可对.INI文件进行读写操作。

其实,对.INI文件的读写完全可以利用Delphi的内置函数来实现。

 

1.INI文件的结构:
; 注释
[小节名]
关键字=值

例如(LoginInfo.ini文件中的内容):

;显示用户信息                          【注释】       
[UserInfo]                        【小节名】  
UserName=xiongmao                 【关键字=值】
Password=123                      【关键字=值】
Connected=0                       【关键字=值】

INI文件允许有多个小节,每个小节又允许有多个关键字, “=”后面是该关键字的值。

 

2.取值的类型: 
值的类型有三种:字符串、整型数值和布尔值。
其中字符串存贮在INI文件中时没有引号,布尔真值用1表示,布尔假值用0表示。 


3.常用函数的介绍:

1>.打开INI文件 

<1>.Filename:=ExtractFilePath(Paramstr(0))+’program.ini’;
<2>.myinifile:=Tinifile.Create(filename);

注意:FileName中可以包含路径名,缺省时为Windows所在目录(一般就是C:windows,对于Windows NT来说,则一般是c:winnt)。
用Create方法创建的实例,在使用完之后,调用Free方法释放内存。

2>.读取关键字的值

针对INI文件支持的字符串、整型数值、布尔值三种数据类型,TINIfiles类提供了三种不同的对象方法来读取INI文件中关键字的值。  
<1>.vs:=myinifile.Readstring(’小节名’,’关键字’,缺省值); string类型 

<2>.vi:=myinifile.Readinteger(’小节名’,’关键字’,缺省值);integer类型

<3>.vb:=myinifile.Readbool(’小节名’,’关键字’,缺省值);   boolean类型

注意:当这个INI文件不存在时,上面的语句读取不发生异常,会自动赋后面的缺省值。 有值就读值,无值就为空。

 

3>.写入INI文件

myinifile.writestring(’小节名’,’关键字’,变量或字符串值); string类型

myinifile.writeinteger(’小节名’,’关键字’,变量或整型数值);integer类

myinifile.writebool(’小节名’,’关键字’,变量或True或False);boolean类型   

注意:当这个INI文件不存在时,上面的语句还会自动创建该INI文件。

 

4>.删除关键字 

myinifile.DeleteKey(’小节名’,’关键字’);

 

5>.对小节的操作 

增加一个小节可用写入的方法来完成。

删除一个小节可用下面的对象方法:myinifile.EraseSection(’小节名’);


另外Tinifile类还提供了三种对象方法来对小节进行操作:

myinifile.readsection(’小节名’,TStrings变量);    // (某小节名中的关键字)可将指定小节中的所有关键字名读取至一个字符串列表变量中; 

myinifile.readsections(TStrings变量);      // (全部小节名)可将INI文件中所有小节名读取至一个字符串列表变量中去。 

myinifile.readsectionvalues(’小节名’,TStrings变量); 
// (某小节名中的关键字和值、=)可将INI文件中指定小节的所有行(包括关键字、=、值)读取至一个字符串列表变量中去。

 

6>.释放

在适当的位置用下面的语句释放myinifile:

myinifile.distory;

或者:myinifile.Free; 

 

4.使用实例

Uses  IniFiles;

//读取INI文件
procedure TForm1.btn1Click(Sender: TObject);
var  myinifile:TIniFile;
begin
  myinifile:=TInifile.Create(ExtractFilePath(Application.ExeName)+ 'LoginInfo.ini ');
  edit1.Text:=   myinifile.readstring( 'UserInfo', 'UserName', '缺省的用户名称 ');
  edit2.text:=   inttostr(myinifile.readinteger( 'UserInfo', 'Password ',0));
  checkbox1.Checked:= myinifile.readbool( 'UserInfo', 'Connected',False);
  myinifile.Destroy;
end;
//写INI文件
procedure TForm1.btn2Click(Sender: TObject);
var  myinifile:TIniFile;
begin
  myinifile:=TInifile.Create(ExtractFilePath(Application.ExeName)+ 'LoginInfo.ini ');
  myinifile.writestring('UserInfo', 'UserName ',edit1.Text);
  myinifile.writeinteger('UserInfo', 'UserInfo ',strtoint(edit2.text));
  myinifile.writebool('UserInfo', 'Connected',checkbox1.Checked);
  myinifile.Destroy;
end;




 

你可能感兴趣的:(delphi INI文件的结构及操作方法)