一、INI文件的结构:
; 注释
[小节名]
关键字=值

INI文件允许有多个小节,每个小节又允许有多个关键字, “=”后面是该关键字的值。
值的类型有三种:字符串、整型数值和布尔值。其中字符串存贮在INI文件中时没有引号,布尔真值用1表示,布尔假值用0表示。
注释以分号“;”开头。

二、定义
1、在Interface的Uses节增加IniFiles;
2、在Var变量定义部分增加一行:
myinifile:Tinifile;
然后,就可以对变量myinifile进行创建、打开、读取、写入等操作了。

三、打开INI文件

Filename:=ExtractFilePath(Paramstr(0))+’program.ini’;
myinifile:=Tinifile.Create(filename);

四、读取关键字的值

针对INI文件支持的字符串、整型数值、布尔值三种数据类型,TINIfiles类提供了三种不同的对象方法来读取INI文件中关键字的值。 
vs:=myinifile.Readstring(’小节名’,’关键字’,缺省值); string类型

vi:=myinifile.Readinteger(’小节名’,’关键字’,缺省值);integer类型

vb:=myinifile.Readbool(’小节名’,’关键字’,缺省值);   boolean类型

五、写入INI文件

myinifile.writestring(’小节名’,’关键字’,变量或字符串值); string类型

myinifile.writeinteger(’小节名’,’关键字’,变量或整型数值);integer类

myinifile.writebool(’小节名’,’关键字’,变量或True或False);boolean类型

当这个INI文件不存在时,上面的语句还会自动创建该INI文件。

六、删除关键字

myinifile.DeleteKey(’小节名’,’关键字’);

七、小节操作

增加一个小节可用写入的方法来完成,删除一个小节可用下面的对象方法:myinifile.EraseSection(’小节名’);另外Tinifile类还提供了三种对象方法来对小节进行操作:

myinifile.readsection(’小节名’,TStrings变量);

可将指定小节中的所有关键字名读取至一个字符串列表变量中;

myinifile.readsections(TStrings变量);

可将INI文件中所有小节名读取至一个字符串列表变量中去。

myinifile.readsectionvalues(’小节名’,TStrings变量);

可将INI文件中指定小节的所有行(包括关键字、=、值)读取至一个字符串列表变量中去。

八、释放

在适当的位置用下面的语句释放myinifile:

myinifile.distory;
 
九 Delphi内置函数总结

利用Windows API函数WritePrivateProfileString 和GetPrivateProfileString可对.INI文件进行读写操作。其实,对.INI文件的读写完全可以利用Delphi的内置函数来实现。下面就介绍一些对.INI文件读写时相关的类及其属性方法。

1、TIniFile对象

以Delphi中,定义了一个TIniFile对象,将.INI文件封装在其中,并提供一些方法,专门用来对INI文件进行读写操作。如果在程序中要用到TIniFile类或其方法属性,就必须在程序单元的uses语句中手工加入对IniFiles单元的引用。

2、Create方法

该方法用来创建一个处理INI文件的TIniFile类型实例。

方法声明:constructor Create(const FileName:string);

参数说明:FileName指明待创建的INI文件的文件名;

注释:在使用TIniFile对象之前,必须先用此方法创建一个INI文件的实例。FileName中可以包含路径名,缺省时为Windows所在目录(一般就是C:windows,对于Windows NT来说,则一般是c:winnt)。用Create方法创建的实例,在使用完之后,调用Free方法释放内存。

3、ReadSection方法

该方法从INI文件中读出指定段的所有子键名,并存入Strings参数指定的字符串列表对象中。

方法声明:procedure ReadSection(const Section:string; Strings:TStrings);

参数说明:Section指明要读取段的段名;

Strings指明存放子键名的字符串列表;

注释:ReadSection方法仅读入指定段的所有子键名,但不读入子键的值。

4、ReadSections方法

该方法从INI文件中读取所有段名,并存入Strings参数指定的字符中列表中。

方法声明:procedure ReadSections(Strings:TStrings);

参数说明:Strings参数指明存放段名的字符串列表;

注释:ReadSections方法将INI文件中所有段的段名读出,存入一指定的字符串列表中,此字符串列表可以直接使用某个列表框的Items属性。

5、ReadSectionValues方法

该方法从INI文件中读入指定段的所有子键名及其键值,并存入Strings参数指定的字符串列表中。

方法声明:procedure ReadSectionValues(const Section:String; Strings:TStrings);

参数说明:Section指明要读取段的段名;

Strings指明存放段名的字符串列表;

注释:ReadSectionValues方法与ReadSection方法的区别在于后者仅读入子键名,面前者除了读取子键名之外,还读取该子键对应的键值。读入的子键名及键值在字符串列表中的存放方法与在文件中的显示方法一致,即"Key=Value"形式。

6、EraseSection方法

该方法删除INI文件中指定的一个整段。

方法声明:procedure EraseSection(const Section:string);

参数说明:Section指明待删除段的段名;

注释:EraseSection方法不仅删除指定段的段名,面且同时将该段的所有子键及键值删除。

7、DeleteKey方法

该方法删除指定段中的某个指定的子键。

方法声明:procedure DeleteKey(const Section,Key:string);

参数说明:Section指明待删除子键据段的段名;

Key指明待删除子键的键名;

注释:DeleteKey方法删除整个子键(包括键名和键值),也就是删除该子键所在的一行。

8、ReadBool方法

该方法读取指定段的某个子键的布尔值。

方法声明:function ReadBool(const Section,Key:string;Default:Boolean):Boolean;

参数说明:Section指明待读子键所在段的段名;

Key指明待读子键的键名;

Default参数指明缺省时的返回值。

注释:ReadBool方法用于读取一个子键的布尔型值,当键值为"1"时,返回True,键值为"0"时,返回False.

9、WriteBool方法

该方法向指定段的某个子键写入布尔值。

方法声明:procedure WriteBool(const Section, Key:string; Value:Boolean);

参数说明:Senction指明待写入子键所在段的段名;

Key参数指明待写入值的子键键名;

Value指明待写入的布尔值;

注释:WriteBool 方法用于写入一个子键的布尔值,当Value为"True"时,写入"1"。Value为"Flase"时,写入"0"。若在写入时,指定的段或键名不存在,则自动创建该段和键名。

10、ReadInteger方法

该方法读取指定段的某个子键的整型值。

方法声明:function ReadInteger(const Section,Key:string; Default:longint):longint;

注释:此方法与ReadBool方法类似,只是变量类型不同。

11、WriteInteger方法

该方法向指写段的某个子键写放整型值。

方法声明:procedure WriteInteger(const Section,Key:string; Value:longint);

注释:此方法与WriteBool方法类似,只是变量灰型不同。

12、ReadString方法

该方法读取指定段的某个子键的字符串型 值。

方法声明:function ReadString(const Section,Key:string; Default:string):string;

注释;此方法与ReadBool方法类似,只是变量类型不同。

13、WriteString方法

该方法向指写段的某个子键写入整型值。

方法声明:procedure WriteString(const Section,Key:string; Value:string);

注释:此方法与WriteBool方法类似,只是变量类型不同。

14、FileName属性

该属性指明被封装在TIniFile对象中的INI文件的文件名。

属性声明:property FileName:string;

注释:FileName属性是一个运行时的只读属性。

由一面的介绍,我们可以看到,强大的Delphi对INI文件的支持是非常全面的。我们在编写涉及此类操作的程序时,几乎无需使用Windows API函数

Delphi对ini文件的操作的更多相关文章

  1. delphi对ini文件的操作(转载 万一)

    ini 文件操作记要(1): 使用 TIniFileunit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Gr ...

  2. Delphi 对ini文件的操作

    界面如图: 代码如下: unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Vari ...

  3. Delphi关于记录文件的操作

    http://www.cnblogs.com/railgunman/archive/2010/08/16/1801004.html Delphi关于记录文件的操作   本例子几个变量的说明TFileR ...

  4. delphi中ini 文件操作记要(1): 使用 TIniFile

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  5. delphi读取ini文件

    ini文件在系统配置及应用程序参数保存与设置方面,具有很重要的作用,所以可视化的编程一族,如vb.vc.vfp.delphi等都提供了读写ini文件的方法,其中delphi中操作ini文件,最为简洁, ...

  6. delphi 基础之三 文件流操作

    文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的, ...

  7. Delphi 实现Ini文件参数与TEdit和TCheckBox绑定(TSimpleParam)

    在实际工作中,常遇到对Ini参数的修改,显示与保存问题. 如果手工写代码,会有很大的工作量. 本例把ini文件的参数与控件绑定起来,以达到方便使用的目的. 本例程共有2个单元 uSimpleParam ...

  8. C#实现.ini文件读写操作

    1.ini文件是什么?        见百度百科:https://baike.baidu.com/item/ini%E6%96%87%E4%BB%B6/9718973?fr=aladdin 2.C#语 ...

  9. VC++ 实现INI文件读写操作

    转载:https://blog.csdn.net/fan380485838/article/details/73188420 在实际项目开发中,会用ini配置文件,在此总结一下对ini读写操作 一:读 ...

随机推荐

  1. 一起学android之怎样获取手机程序列表以及程序相关信息并启动指定程序 (26)

    效果图: 程序列表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpX3FpbmdfeHVfa29uZw==/font/5a6L5L2T/fonts ...

  2. [转] HTML中调用JavaScript的几种情况和规范写法

    比较简单,基础. 一.引用外部文件中的js脚本 <script type="text/javascript" src="ext.js"></s ...

  3. WWDC心愿单:新版OS X或将有这些变化

    每年的WWDC开发者大会上苹果都会展示最新的软件研发成果,在新一代MacBook Pro和MacBook Air笔记本到来之前,我们不妨来期待下新版OS X会有怎样的变化. Siri入驻Mac   此 ...

  4. 使用搬瓦工搭建javaweb环境

        /* 本文是基于搬瓦工vps的centos-6-x86_64的Linux系统搭建. 需准备的工具:1.putty(用于连接Linux系统)  2.WinSCP(搬瓦工官方提供的ftp上传下载工 ...

  5. Android Camera开发:使用GLSurfaceView预览Camera 基础拍照

    GLSurfaceView是OpenGL中的一个类,也是可以预览Camera的,而且在预览Camera上有其独到之处.独到之处在哪?当使用Surfaceview无能为力.痛不欲生时就只有使用GLSur ...

  6. 没有懂的leetcode

    Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...

  7. win10的独立存储

    win10的独立存储和win8的大致相同 Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.Appl ...

  8. 移动页面缩放方法之(二)控制HTML

    <!DOCTYPE HTML> <html lang="zh-cn"> <head> <meta http-equiv="Con ...

  9. Message,MessageQueue,Looper,Handler ——由view.post(runnable想到的)

    近日看到代码有view.post(runable),发现对handler机制又有些模糊,故做些复习. 这里就不再对具体的源码原理做深入复习了,就抄一些基本的结论吧. 1.基本概念 Message:基本 ...

  10. 阿里云OSS存储开发(一)

    Step 1. 初始化一个OSSClient OSSClient是与OSS服务交互的客户端,SDK的OSS操作都是通过OSSClient完成的. 下面代码新建了一个OSSClient: using A ...