Using INI Files/zh CN

From Lazarus wiki
Jump to: navigation, search

العربية (ar) Deutsch (de) English (en) español (es) suomi (fi) français (fr) русский (ru) 中文(中国大陆)‎ (zh_CN)

INI 文件

基本信息

INI文件可以被方便地用来储存用户基本设置。通过INIfiles单元和TINIFile类,你可以轻松地使用已有的Ini文件。这个单元包括在FCL中。

INI 文件

INI文件使用方括号来创建类目,每个类目中有包含许多与其,一个键和与其对应的值使用等于号连接(key=Value)。

类目总是被包含在方括号里 ([Section]).

注释当然是允许的,只要在注释行的开头加上一个分号(;)就可以了。由于INI文件并没有统一的标准,所以其他的一些符号也有可能被使用,比如#。

如今,XML文件经常被用来替代INI文件用作字符串的储存,因为INI文件对较长字符串的支持并不是太好。但是INI(类INI)文件依旧保持着Linux/Unix下设置文件的统治地位

一个INI文件的简单例子:

; INI文件开头的注释
 
; 空行将会被忽略
 
; 注意这里并没有定义任何的类目
Compiler=Delphi
; 键: Compiler
; 值: Delphi
 
[General]
; 这个标记表示General类目的开始
Compiler=FreePascal
; 键是 Compiler 且值是 FreePascal

Ini 文件读取实例

下面的命令行程序展示了如何读取INI文件,为了测试这个程序我们必须建立如下的INI文件并保存为“C:\DB.ini”。编辑INI文件使它拥有一个叫做"INIDB"的类目以及如下的键与值:

[INIDB]
; 保存为 C:\DB.ini
Author=Adam
Pass=
DBFile=C:\Money.dat

现在让我们回到代码

Program IniSample;
 
{$mode objfpc}{$H+}
 
Uses
  Classes,SysUtils,INIFiles;
 
Var
 INI:TINIFile;
 Author,Pass,DBFile:String;
 PassEnter:String;
 
begin
  // 建立INI文件并指定INI文件的位置
  INI := TINIFile.Create('C:\DB.ini');
  // 从INI文件读取字符串的实例
  // 你也可以读取想Boolean这样别的值
  Author := INI.ReadString('INIDB','Author','');
  Pass := INI.ReadString('INIDB','Pass','');
  DBFile := INI.ReadString('INIDB','DBFile','');
  if Pass <> '' then
  begin
    Writeln('Password Required');
    Repeat
      Readln(PassEnter);
      if not (PassEnter = Pass) then Writeln('Wrong Password');
    until(PassEnter = Pass);
    Writeln('Correct Password');
  end;
  Writeln('Author : '+Author);
  Writeln('File : '+DBFile);
  Writeln('Password : '+Pass);
  Readln;
  // 在使用完INI文件后,你必须调用对象的Free方法
  // 虽然这应该在try...finally块中...
  // 因为这个对象可能因为上述语句的一些错误而过早释放
  Ini.Free; 
end.

对象百科

在TINIFile类中有许多不同的属性、过程和函数可以使用。

CaseSensitive - 这个属性允许你设置对于键和类目的名称是否大小写敏感,默认不敏感。

ReadString - 拥有三个参数:第一个是需要搜索的类目,第二个是要搜索的键,第三个是当类目或键未找到时返回的默认值 。

WriteString - 同样拥有三个参数:第一个是类目,第二个键,第三个是要写入的值,如果键或类目已经存在,旧的数值会被新的数值覆盖。


ReadSections - 它允许你导出INI文件中所有的类目并放入TString类的实例中(或使用AS操作符转换为TStringList)


DeleteKey - 从一个指定的类目中删除一个已经存在的键。

EraseSection - 删除一个类目以及其下所有的数据(键与值)。

除此之外还有许多其他的过程或函数,但这些足够使你开始。

参考文档

这: FP中关于INI文件的文档

相关链接