Sign in Join
Wiki copytemporary

Using INI Files/zh CN: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Using INI Files/zh CN

OldNewLine
1+## INI 文件
2+
3+### 基本信息
4+
5+INI文件可以被方便地用来储存用户基本设置。通过**INIfiles**单元和**TINIFile**类,你可以轻松地使用已有的Ini文件。这个单元包括在FCL中。
6+
7+### INI 文件
8+
9+INI文件使用方括号来创建**类目**,每个类目中有包含许多**键**与其**值**,一个键和与其对应的值使用等于号连接(key=Value)。
10+
11+类目总是被包含在方括号里 (\[Section\]).
12+
13+注释当然是允许的,只要在注释行的开头加上一个分号(;)就可以了。由于INI文件并没有统一的标准,所以其他的一些符号也有可能被使用,比如#。
14+
15+如今,XML文件经常被用来替代INI文件用作字符串的储存,因为INI文件对较长字符串的支持并不是太好。但是INI(类INI)文件依旧保持着Linux/Unix下设置文件的统治地位
16+
17+一个INI文件的简单例子:
18+
19+``` ini
20+; INI文件开头的注释
21+
22+; 空行将会被忽略
23+
24+; 注意这里并没有定义任何的类目
25+Compiler=Delphi
26+; 键: Compiler
27+; 值: Delphi
28+
29+[General]
30+; 这个标记表示General类目的开始
31+Compiler=FreePascal
32+; 键是 Compiler 且值是 FreePascal
33+```
34+
35+### Ini 文件读取实例
36+
37+下面的命令行程序展示了如何读取INI文件,为了测试这个程序我们必须建立如下的INI文件并保存为“C:\DB.ini”。编辑INI文件使它拥有一个叫做"INIDB"的类目以及如下的键与值:
38+
39+``` ini
40+[INIDB]
41+; 保存为 C:\DB.ini
42+Author=Adam
43+Pass=
44+DBFile=C:\Money.dat
45+```
46+
47+现在让我们回到代码
48+
49+``` pascal
50+Program IniSample;
51+
52+{$mode objfpc}{$H+}
53+
54+Uses
55+ Classes,SysUtils,INIFiles;
56+
57+Var
58+ INI:TINIFile;
59+ Author,Pass,DBFile:String;
60+ PassEnter:String;
61+
62+begin
63+ // 建立INI文件并指定INI文件的位置
64+ INI := TINIFile.Create('C:\DB.ini');
65+ // 从INI文件读取字符串的实例
66+ // 你也可以读取想Boolean这样别的值
67+ Author := INI.ReadString('INIDB','Author','');
68+ Pass := INI.ReadString('INIDB','Pass','');
69+ DBFile := INI.ReadString('INIDB','DBFile','');
70+ if Pass <> '' then
71+ begin
72+ Writeln('Password Required');
73+ Repeat
74+ Readln(PassEnter);
75+ if not (PassEnter = Pass) then Writeln('Wrong Password');
76+ until(PassEnter = Pass);
77+ Writeln('Correct Password');
78+ end;
79+ Writeln('Author : '+Author);
80+ Writeln('File : '+DBFile);
81+ Writeln('Password : '+Pass);
82+ Readln;
83+ // 在使用完INI文件后,你必须调用对象的Free方法
84+ // 虽然这应该在try...finally块中...
85+ // 因为这个对象可能因为上述语句的一些错误而过早释放
86+ Ini.Free;
87+end.
88+```
89+
90+### 对象百科
91+
92+在TINIFile类中有许多不同的属性、过程和函数可以使用。
93+
94+**CaseSensitive** - 这个属性允许你设置对于键和类目的名称是否大小写敏感,默认不敏感。
95+
96+**ReadString** - 拥有三个参数:第一个是需要搜索的类目,第二个是要搜索的键,第三个是当类目或键未找到时返回的默认值 。
97+
98+**WriteString** - 同样拥有三个参数:第一个是类目,第二个键,第三个是要写入的值,如果键或类目已经存在,旧的数值会被新的数值覆盖。
99+
100+**ReadSections** - 它允许你导出INI文件中所有的类目并放入TString类的实例中(或使用AS操作符转换为TStringList)
101+
102+**DeleteKey** - 从一个指定的类目中删除一个已经存在的键。
103+
104+**EraseSection** - 删除一个类目以及其下所有的数据(键与值)。
105+
106+除此之外还有许多其他的过程或函数,但这些足够使你开始。
107+
108+### 参考文档
109+
110+这: [FP中关于INI文件的文档](http://lazarus-ccr.sourceforge.net/docs/fcl/inifiles/index.html)
111+
112+## 相关链接
113+
114+- [[XML Tutorial/zh CN]]
115+
116+---
117+*From the Free Pascal wiki, page "Using INI Files/zh CN", as it stood on 2020-03-04 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history