版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、IniFile Ini操作 分类: Delphi 2010-07-10 22:24 903人阅读 评论(0) 收藏 举报 INI文件的结构如下小节名关键字=值uses IniFiles; 操作Ini文件需要引用TIniFile 的单元常用的方法WriteString 写入字符串WriteInteger 写入数字WriteBool 写入布尔值ReadString 读取字符串值ReadInteger
2、; 读取数字ReadBool 读取布尔值ReadSections 读取小节列表ReadSection 读取某小节下关键字列表ReadSectionValues 读取某小节下所有内容列表,包括关键字和值写入 view plaincopy to clipboardprint?·········10·····
3、···20········30········40········50········60········70·····
4、···80········90········100·······110·······120·······130·······14
5、0·······150var F:TIniFile; begin F := TIniFile.Create('c:/A.ini'); /如果文件存在则打开,如果不存在,当向其中写入数据时,将创建ini文件 F.WriteString('PersonInfo','姓名&
6、#39;,'张三'); F.WriteInteger('PersonInfo','年龄',20); F.WriteBool('PersonInfo','婚否',False); end; var F:TIniFile;begin F := TIniFile.Create('c:/A.ini'); &
7、#160; /如果文件存在则打开,如果不存在,当向其中写入数据时,将创建ini文件 F.WriteString('PersonInfo','姓名','张三'); F.WriteInteger('PersonInfo','年龄',20); F.WriteBool('PersonInfo','婚否',False);end; 读取:读取方法的第三个参数表示,当读取失败时,返回的结果, view plaincopy to clipb
8、oardprint?var F:TIniFile; name:string; age:Integer; merry:Boolean; begin F := TIniFile.Create('c:/A.ini'); name := F.ReadString('PersonInfo','姓名','无名氏');&
9、#160; /当读取失败时,返回'无名氏',否则返回读取的值 age := F.ReadInteger('PersonInfo','年龄',20); merry := F.ReadBool('PersonInfo','婚否',False); end; var F:TIniFile; name:string; age:Integer; merry:
10、Boolean;begin F := TIniFile.Create('c:/A.ini'); name := F.ReadString('PersonInfo','姓名','无名氏'); /当读取失败时,返回'无名氏',否则返回读取的值 age := F.ReadInteger('PersonInfo','年龄',20); merry := F.ReadBool('PersonInfo',
11、9;婚否',False);end; 读取小节的列表 view plaincopy to clipboardprint?var F:TIniFile; List:TStringList; begin try List := TStringList.Create; F := TIniFile.Create('c:/A.ini');
12、; F.ReadSections(List); /将小节依次读取到List中 ShowMessage(List.Text); /显示小节列表内容 finally&
13、#160; List.Free; F.Free; end; end; var F:TIniFile; List:TStringList;begin try List := TStringList.Create; F := TIniFile.Create('c:/A.ini');
14、 F.ReadSections(List); /将小节依次读取到List中 ShowMessage(List.Text); /显示小节列表内容 finally List.Free;
15、 F.Free; end;end; 读取某小节下的关键字列表 view plaincopy to clipboardprint?var F:TIniFile; List:TStringList; begin try List := TStringList.Create; F := TIniFile.Create('c:/A.ini'
16、); F.ReadSection('PersonInfo',List); /将小节依次读取到List中 ShowMessage(List.Text); /显示'Pe
17、rsonInfo'小节下关键字列表内容 finally List.Free; F.Free; end; end; var F:TIniFile; List:TStringList;begin try List := TStringList.Create; F
18、:= TIniFile.Create('c:/A.ini'); F.ReadSection('PersonInfo',List); /将小节依次读取到List中 ShowMessage(List.Text);
19、 /显示'PersonInfo'小节下关键字列表内容 finally List.Free; F.Free; end;end; 读取某小节下所有内容列表,包括关键字和值 view plaincopy to clipboardprint?var F:TIniFile; List:TStringList; begin try
20、160; List := TStringList.Create; F := TIniFile.Create('c:/A.ini'); F.ReadSectionValues('PersonInfo',List); /将小节依次读取到List中
21、0; ShowMessage(List.Text); /读取某小节下所有内容列表,包括关键字和值 finally List.Free; F.Free; end; end; var F:TIniFile; Li
22、st:TStringList;begin try List := TStringList.Create; F := TIniFile.Create('c:/A.ini'); F.ReadSectionValues('PersonInfo',List); /将小节依次读取到List中
23、; ShowMessage(List.Text); /读取某小节下所有内容列表,包括关键字和值 finally List.Free; F.Free; end;end; 其它常用方法 EraseSection 删除某个小节 DeleteKey 删除关键字 SectionExis
24、ts 判断某个章节是否存在 ValueExists 判断某个小节下的某个关键字是否存在 本文来自CSDN博客,转载请标明出处:一、INI文件的结构: ; 注释 小节名 关键字=值 INI文件允许有多个小节,每个小节又允许有多个关键字, “=”后面是该关键字的值。 值的类型有三种:字符串、整型数值和布尔值。其中字符串存贮在INI文件中时没有引号,布尔真值用1表示,布尔假值用0表示。 注释以分号“;”开头。 二、定义 1、在Interface的Uses节增加IniFiles
25、; 2、在Var变量定义部分增加一行: myinifile:Tinifile; 然后,就可以对变量myinifile进行创建、打开、读取、写入等操作了。 三、打开INI文件 Filename:=ExtractFilePath(Paramstr(0)+program.ini; myinifile:=Tinifile.Create(filename); 四、读取关键字的值 针对INI文件支持的字符串、整型数值、布尔值三种数据类型,TINIfiles类提供了三种不同的对象方法来读取INI文件中关键字
26、的值。 vs:=myinifile.Readstring(小节名,关键字,缺省值); string类型 vi:=myinifile.Readinteger(小节名,关键字,缺省值);integer类型 vb:=myinifile.Readbool(小节名,关键字,缺省值); boolean类型 五、写入INI文件 myinifile.writestring(小节名,关键字,变量或字符串值); string类型 myinifile.writeinteger(小节名,关键字,变量或整型数值);integer类
27、myinifile.writebool(小节名,关键字,变量或True或False);boolean类型 当这个INI文件不存在时,上面的语句还会自动创建该INI文件。 六、删除关键字 myinifile.DeleteKey(小节名,关键字); 七、小节操作 增加一个小节可用写入的方法来完成,删除一个小节可用下面的对象方法:myinifile.EraseSection(小节名);另外Tinifile类还提供了三种对象方法来对小节进行操作: myinifile.readsection(小节名,TStrings变量);&
28、#160; 可将指定小节中的所有关键字名读取至一个字符串列表变量中; myinifile.readsections(TStrings变量); 可将INI文件中所有小节名读取至一个字符串列表变量中去。 myinifile.readsectionvalues(小节名,TStrings变量); 可将INI文件中指定小节的所有行(包括关键字、=、值)读取至一个字符串列表变量中去。 八、释放 在适当的位置用下面的语句释放myinifile: myinifile.distory;
29、 利用Windows API函数WritePrivateProfileString 和GetPrivateProfileString可对.INI文件进行读写操作。其实,对.INI文件的读写完全可以利用Delphi的内置函数来实现。下面就介绍一些对.INI文件读写时相关的类及其属性方法。 1、TIniFile对象 以Delphi中,定义了一个TIniFile对象,将.INI文件封装在其中,并提供一些方法,专门用来对INI文件进行读写操作。如果在程序中要用到TIniFile类或其方法属性,就必须在程序单元的uses语句中手工加入对IniFiles单元
30、的引用。 2、Create方法 该方法用来创建一个处理INI文件的TIniFile类型实例。 方法声明:constructor Create(const FileName:string); 参数说明:FileName指明待创建的INI文件的文件名; 注释:在使用TIniFile对象之前,必须先用此方法创建一个INI文件的实例。FileName中可以包含路径名,缺省时为Windows所在目录(一般就是C:windows,对于Windows NT来说,则一般是c:winnt)。用Create
31、方法创建的实例,在使用完之后,调用Free方法释放内存。 3、ReadSection方法 该方法从INI文件中读出指定段的所有子键名,并存入Strings参数指定的字符串列表对象中。 方法声明:procedure ReadSection(const Section:string; Strings:TStrings); 参数说明:Section指明要读取段的段名; Strings指明存放子键名的字符串列表; 注释:ReadSection方法仅读入指定段的所有子键名,
32、但不读入子键的值。 4、ReadSections方法 该方法从INI文件中读取所有段名,并存入Strings参数指定的字符中列表中。 方法声明:procedure ReadSections(Strings:TStrings); 参数说明:Strings参数指明存放段名的字符串列表; 注释:ReadSections方法将INI文件中所有段的段名读出,存入一指定的字符串列表中,此字符串列表可以直接使用某个列表框的Items属性。 5、ReadSectionValues方法
33、0; 该方法从INI文件中读入指定段的所有子键名及其键值,并存入Strings参数指定的字符串列表中。 方法声明:procedure ReadSectionValues(const Section:String; Strings:TStrings); 参数说明:Section指明要读取段的段名; Strings指明存放段名的字符串列表; 注释:ReadSectionValues方法与ReadSection方法的区别在于后者仅读入子键名,面前者除了读取子键名之外,还读取该子键对应的键值。读
34、入的子键名及键值在字符串列表中的存放方法与在文件中的显示方法一致,即"Key=Value"形式。 6、EraseSection方法 该方法删除INI文件中指定的一个整段。 方法声明:procedure EraseSection(const Section:string); 参数说明:Section指明待删除段的段名; 注释:EraseSection方法不仅删除指定段的段名,面且同时将该段的所有子键及键值删除。 7、DeleteKey方法 该方法删除指定段中
35、的某个指定的子键。 方法声明:procedure DeleteKey(const Section,Key:string); 参数说明:Section指明待删除子键据段的段名; Key指明待删除子键的键名; 注释:DeleteKey方法删除整个子键(包括键名和键值),也就是删除该子键所在的一行。 8、ReadBool方法 该方法读取指定段的某个子键的布尔值。 方法声明:function ReadBool(const Section,Key:string;
36、Default:Boolean):Boolean; 参数说明:Section指明待读子键所在段的段名; Key指明待读子键的键名; Default参数指明缺省时的返回值。 注释:ReadBool方法用于读取一个子键的布尔型值,当键值为"1"时,返回True,键值为"0"时,返回False. 9、WriteBool方法 该方法向指定段的某个子键写入布尔值。 方法声明:procedure WriteBool(const Sect
37、ion, Key:string; Value:Boolean); 参数说明:Senction指明待写入子键所在段的段名; Key参数指明待写入值的子键键名; Value指明待写入的布尔值; 注释:WriteBool 方法用于写入一个子键的布尔值,当Value为"True"时,写入"1"。Value为"Flase"时,写入"0"。若在写入时,指定的段或键名不存在,则自动创建该段和键名。 10、ReadInteg
38、er方法 该方法读取指定段的某个子键的整型值。 方法声明:function ReadInteger(const Section,Key:string; Default:longint):longint; 注释:此方法与ReadBool方法类似,只是变量类型不同。 11、WriteInteger方法 该方法向指写段的某个子键写放整型值。 方法声明:procedure WriteInteger(const Section,Key:string; Value:longi
39、nt); 注释:此方法与WriteBool方法类似,只是变量灰型不同。 12、ReadString方法 该方法读取指定段的某个子键的字符串型 值。 方法声明:function ReadString(const Section,Key:string; Default:string):string; 注释;此方法与ReadBool方法类似,只是变量类型不同。 13、WriteString方法 该方法向指写段的某个子键写入整型值。 方
40、法声明:procedure WriteString(const Section,Key:string; Value:string); 注释:此方法与WriteBool方法类似,只是变量类型不同。 14、FileName属性 该属性指明被封装在TIniFile对象中的INI文件的文件名。 属性声明:property FileName:string; 注释:FileName属性是一个运行时的只读属性。 由一面的介绍,我们可以看到,强大的Delphi对INI文件的支持
41、是非常全面的。我们在编写涉及此类操作的程序时,几乎无需使用Windows API函数 2005-8-24 15:09 回复 pathog 0位粉丝 3楼越来越多的程序使用了多国语言切换,虽然DELPHI自带多语言包的添加和配置,但是那种方法在切换语言时界面会出现闪烁,而且实现起来很麻烦,这里我介绍给大家的是利用INI文件来读取界面的语种文字,用这种方法,不但简单易行,而且在切换的时候不会出现界面的闪烁。 我们从一个例子出发,看看怎么实现语言的切换。首先建立一个新工程。 放置如下组件:
42、160; MainMenu1: TMainMenu; File1: TMenuItem; Exit1: TMenuItem; Label1: TLabel; Button1: TButton; CheckBox1: TCheckBox; CheckBox2: TCheckBox; Button2: TButton; Label2: TLabel; ComboBox1:
43、TComboBox; Label3: TLabel; 由于要读取Ini文件,所以在USES中加入声明IniFiles;然后将Button1和Button2的ShowHint属性设置为True;其中我们用ComboBox1来显示可供选择的语言和用来选择语言。 我们在程序的目录下编辑如下的Chinese GB.Ini文件: ;/ ; ; 翻译的一些规则: ; 翻译前,拷贝 Chinese GB.ini 改名到 yourlanguage.ini ; 仅仅翻译符号'='后的文字&
44、#160; ; ; Translations ; Label1.Caption =文字1 Label2.Caption =文字2 Label3.Caption =语言 Button1.Caption =按钮1 Button2.Caption =按钮2 Button1.Hint =按钮1_提示 Button2.Hint =按钮2_提示 CheckBox1.Caption =复选框1 CheckBox2.Caption =复选框2 File1.
45、Caption =文件 Exit1.Caption =退出 ; Messages ; M1 =信息框测试 ; ;/ 同样的方法编辑一个名为English.ini的文件,将“=”左边的文字改为英文。 例如:Label1.Caption =Label1 程序运行时,我们查找当前目录下所有的语言配置文件(*.ini),为了达到这个目的,我编写了如下的函数搜索目录下所有的语言配置文件的文件名,然后将文件名去掉ini扩展名保存返回: function TForm1.Sea
46、rchLanguagePack:TStrings; var ResultStrings:TStrings; DosError:integer; SearchRec:TsearchRec; begin ResultStrings:=TStringList.Create; DosError:=FindFirst(ExtractFilePath(ParamStr(0)+'*.ini', faAnyFile, SearchRec);
47、; while DosError=0 do begin 返回的文件名并去掉末尾的.ini字符 ResultStrings.Add(ChangeFileExt(SearchRec.Name,'); DosError:=FindNext(SearchRec); end; FindClose(SearchRec); Result:=ResultStrings; end; 在Form建立的
48、事件中添加代码,将目录下所有的语言文件名加入选择列表框中。 procedure TForm1.FormCreate(Sender: TObject); begin ComboBox1.Items.AddStrings(SearchLanguagePack); end; 程序的重点在如何切换语言,在ComboBox1的OnChange事件中进行切换操作。这里我写了SetActiveLanguage过程用于实现这一操作。 procedure TForm1.ComboBox1Change(Sender: TObjec
49、t); begin SetActiveLanguage(ComboBox1.Text); end; 其中SetActiveLanguage代码如下: procedure TForm1.SetActiveLanguage(LanguageName:string); const Translation_s='Translations' Messages='Messages' var frmComponent:TComponent; i:Integer; begin with TInifile.Create(ExtractFilePath(ParamStr(0)+LanguageN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【初中生物】真菌-2024-2025学年七年级生物上册同步教学课件(人教版2024)
- 【初中生物】微生物的分布-2024-2025学年七年级生物上册同步备课课件(人教版2024)
- 2024就智能工厂建设与运营的合资合同
- 2024年度清雪业务承包合同
- 2024年度特许经营与加盟合同
- 2024建设工程的项目合作协议合同范本
- 2024个人小额贷款合同
- 2024股份合伙人合同范本
- 2024年工程设计合作伙伴协议
- 2024年度原材料采购担保合同
- 工业自动化系统集成项目验收方案
- 新教科版科学六年级上册全册实验汇总 (超全)
- 王洪图黄帝内经80课时讲稿
- 摊铺机司机班组级安全教育试卷
- 重症肌无力指南
- 限制被执行人驾驶令申请书
- 项目主要施工管理人员情况
- 个人借条电子版模板
- 关于学习“国语普通话”发声亮剑【三篇】
- 玻璃厂应急预案
- 婴幼儿游戏照料(婴幼儿回应性照护课件)
评论
0/150
提交评论