INI 文件编程

Delphi 中的 INI 文件编程

整理编辑 :China ASP


---- INI 文件在系统配置及应用程序参数保存与设置方面 ,具有很重要的作用 ,所以可视化的编程一族 ,如 VB 、 VC 、 VFP 、 Delphi 等都提供了读写 INI 文件的方法 ,其中 Delphi 中操作 INI 文件 ,最为简洁 ,这是因为 Delphi3 提供了一个 TInifile 类 ,使我们可以非常灵活的处理 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 文件。


---  附源程序清单

unit Unit1;


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;

    procedure FormCreate(Sender: TObject);

    procedure FormDestroy(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;


implementation

var

  myinifile:TInifile;

{$R *.DFM}


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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值