金林樵 郭彩虹
在Windows中的应用程序极大多数拥有自己的初始化文件,如PowerBuilder、Office及Cstar等。因此初始化文件的读写是每个高级程序员必须掌握的技术。虽然初始化文件的读写也可用Object Pascal中的文本文件一样读写,但因初始化文件不同于一般的文本文件,它有自己固定的格式(见下面的初始化文件是ucdos中提供的rdfnt.ini文件),如果用文本文件的方式读写,不仅格式转换十分繁琐,且很容易出现错误,为了方便
程序员读写初始化文件中的数据,Delphi中向用户提供了一个TIniFile类,通过TiniFile类就可十分方便地读写初始化文件。
Ucdos中rdfnt.ini文件的内容为:
[True Type fonts directory]
Dir=C:\WINDOWS\SYSTEM
[True Type fonts list]
ARIAL.TTF=64
ARIALBD.TTF=65
ARIALI.TTF=66
ARIALBI.TTF=67
TIMES.TTF=68
TIMESBD.TTF=69
TIMESI.TTF=70
TIMESBI.TTF=71
COUR.TTF=72
COURBD.TTF=73
COURI.TTF=74
COURBI.TTF=75
[Use All True Type fonts]
All=0
TiniFile类不是一个Delphi的部件,因此不能在Delphi的VCL
模板中找到,它在Delphi 系统中的inifiles单元中定义,因此要使用TiniFile类,必须在使用该类的单元文件中用Uses inifiles指令明确地说明。
TiniFile类中定义了许多成员函数,这里介绍几个使用频率较高的成员函数:
⑴ Create()
函数定义为: constructor Create(const FileName: string);
该函数建立TiniFile类的对象。参数FileName是要读写的初始化文件名。
若读写的文件在Windows的目录里(如system.ini文件),则可以直接写文件名而不必指定路径,否则就必须指定路径(如d:\ucdos\rdfnt.ini)。
如按以下规则在规定的目录中存在该文件,则打开该初始化文件;否则在规定的目录里创建该初始化文件。
⑵ ReadSections()
过程定义为: procedure ReadSections(Strings: TStrings);
该过程将从所建立的TiniFile类的对象(即与之关联的初始化文件)中读取所有的节点名(即用括号括起的那部分,如rdfnt.ini文件中的[True Type fonts list])存入字符串列表中。参数Strings即为字符串列表的变量名。
⑶ ReadSectionValues()
过程定义为: procedure ReadSectionValues(const Section: string; Strings: TStrings);
该过程将参数Section的值所对应的节点(如rdfnt.ini文件中的[True Type fonts list])中的各个关键字(如ARIALBI.TTF)及其所含的值(如ARIALBI.TTF关键字值为67)读入参数Strings指明的字符串列表中。
⑷ ReadSection()
过程定义为: procedure ReadSection(const Section: string; Strings: TStrings);
该过程将参数Section的值所对应的节点中的各个关键字读入参数Strings指明的字符串列表中。与ReadSectionValues()不同的是它没有读取各个关键字的对应值。
⑸ ReadString()
函数定义为: function ReadString(const Section, Ident, Default: string): string;
该函数返回以参数Section的值为节点名、参数Ident的值为关键字名所对应的关键字值(如[True Type fonts list]节中ARIALBI.TTF关键字的值为67)。当指定的节点或节内的关键字不存在时,则函数返回参数Default的缺省值。返回的值是一个字符串型数据。
当指定节点中关键字值的数据类型不是字符串时,则可用ReadInteger()成员函数读取一个整型值,用ReadBool()成员函数