.ini文件是Windows下的配置文件,使用.ini文件我们可以很方便的把一个软件的配置信息等保存在.ini文件中。
Delphi提供了一个TInifile类,使我们可以非常灵活的处理ini文件。
一.ini文件的结构
[小节名] 关键字1=值1 关键子2=值2
ini文件允许有多个小节,每个小节又允许有多个关键字,"="后面是该关键字的值。分号 ";" 开头在ini文件中表示注释。
值的类型常用的有三种,还支持浮点、日期等类型:
1. 字符串(其中字符串存贮在ini文件中时没有引号。)
2. 整型数值
3. 布尔值(布尔真值用1表示,布尔假值用0表示。)
ini文件结构如下图所示:
二、相关方法
1. 读方法
myInifile.Readstring(小节名, 关键字, 变量或字符串值); // 读字符串 myInifile.ReadInteger(小节名, 关键字, 变量或整型数值); // 读整数 myInifile.ReadBool(小节名, 关键字, 变量或True或False); // 读布尔类型
2. 写方法
myInifile.WriteString(小节名, 关键字, 变量或字符串值); myinifile.WriteInteger(小节名, 关键字, 变量或整型数值); myinifile.WriteBool(小节名, 关键字, 变量或True或False);
注1:当这个ini文件不存在时,上面的语句还会自动创建该ini文件
注2:要添加一个小节,也是使用写方法完成。
注3:如果要对一个关键字的值进行修改,同样使用上面的写方法。
3. 删除关键字方法
myInifile.DeleteKey(小节名, 关键字);
4. 操作小节的方法
myInifile.ReadSections(TStrings变量); // 将ini文件中所有小节名读取至一个字符串列表变量中去。 myInifile.ReadSection(小节名, TStrings变量); // 可将指定小节中的所有关键字名读取至一个字符串列表变量中。 myInifile.ReadSectionValues(小节名, TStrings变量); // 可将ini文件中指定小节的所有行(包括关键字、=、值)读取至一个字符串列表变量中去。 myInifile.EraseSection(小节名); // 删除一个小节。
如何增加一个小节?
增加一个小节可用写入的方法来完成;也就是说增加小节就必须得添加默认 关键字 和 值。如:
myInifile.WriteString('郴维网', '网址', 'http://www.1118pc.com'); // 这样就添加了一个 '郴维网' 的小节。
5. 最后记得要释放资源
myInifile.Free;
三、Delphi中ini文件的使用
1. 首先在uses中添加IniFiles
2. 在var变量定义 myInifile: TIniFile;
3. 定义类的一个实例。然后就可以对变量myInifile进行创建、打开、读取、写入等操作了。
代码:
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.IniFiles, Vcl.StdCtrls; // 1. uses 加入IniFiles type TForm1 = class(TForm) btn1: TButton; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); var filePath: string; myInifile: TIniFile; // 2. 定义变量 begin // 指定ini文件所在路径。(ExtractFilePath(Paramstr(0))表示当前程序所在路径) filePath := ExtractFilePath(Paramstr(0)) + 'test.ini'; // 3. 创建实例与ini文件关联 myInifile := TIniFile.Create(filePath); // 使用try finally保证TIniFile资源的释放。 try // 4. 读写操作 finally // 5. 最后一定要释放资源 myInifile.Free; end; end; end.
相关示例代码
1. 建立如下图所示的ini文件,然后读取关键字和值到memo控件中。
// 写入 test.ini procedure TForm1.btn1Click(Sender: TObject); var filePath: string; myInifile: TIniFile; begin filePath := ExtractFilePath(Paramstr(0)) + 'test.ini'; myInifile := TIniFile.Create(filePath); try myInifile.WriteString('郴维网', '网址', 'http://www.1118pc.com'); myInifile.WriteInteger('郴维网', '整形', 888); myInifile.WriteBool('郴维网', '布尔', True); myInifile.WriteFloat('郴维网', '浮点型', 3.14); // 日期型必须是一个 TDate 或 TDateTime 对象, VarToDateTime把字符串转换成日期时间对象 myInifile.WriteDate('郴维网', '日期', VarToDateTime('2020/9/28')); myInifile.WriteDateTime('郴维网', '日期时间', Now); // Now获取当前日期时间 finally myInifile.Free; end; end; // 读取关键字和值(直接使用ReadSectionValues可以完成) procedure TForm1.btn2Click(Sender: TObject); var filePath: string; myInifile: TIniFile; begin filePath := ExtractFilePath(Paramstr(0)) + 'test.ini'; myInifile := TIniFile.Create(filePath); try myInifile.ReadSectionValues('郴维网', mmo1.Lines); // memo控件的Lines便是TStrings对象 finally myInifile.Free; end; end;