delphi ini 文件、操作  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi ini 文件、操作


delphi ini 文件、操作

.ini 文件是基于文本的文件,主要用于存储任何应用程序的配置数据。


虽然我们知道在 Windows 中最好使用 Windows Registry 来存储应用程序的配置,但随着 Delphi 的新版本,并且主要是在多设备开发中,我们不想为每个平台编写代码,这就是为什么我建议处理所有平台的 ini 文件的原因。


INI 文件,格式

配置或初始化 .INI 文件是文本文件,限制为 64 KB,分为多个部分,每个部分可以有零个或多个键。这些键中的每一个都可以不包含或包含多个值。


.ini 文件示例


;comentario

 

[Sección1]

  Key1=Value1

  Key2=Value2

  Key3=

 

[Sección2]

  Key4=Value4

  Key2=Value2

  Key5=

节名称必须用方括号括起来,并且必须从一行的开头开始。部分名称和键不区分大小写,并且不能包含空格字符。


键名后面总是跟一个等号(“=”),它可能有也可能没有空格字符,它们被忽略。


现在,如果在一个 .ini 文件中,我们有多个同名的部分,最后一次出现为准,就好像在一个部分中我们有多个同名的键。


一个键可以包含以下数据:


细绳

整数

漂浮

布尔值

约会时间

TIniFile 类

Delphi 提供了TIniFile类 ,在inifiles.pas单元中声明, 提供了  从 .INI 文件中存储和检索值的方法。


在开始使用 TIniFile 类的方法之前,必须创建该类的一个实例:


use inifiles; 

... 

var

    ArchivoIni: TIniFile; 

begin

    ArchivoIni: = TIniFile.Create ('config.ini');

前面的代码创建了IniFile对象并将文件名“config.ini”分配给类的唯一属性 FileName 属性 ,用于指定要使用的 INI 文件的名称。


上面编写的代码 在Windows默认目录中查找 config.ini 文件。但是如果我们想将 .ini 文件与可执行文件放在同一个文件夹中(这将是最正确的),我们可以通过在实例化对象时指定可执行文件的路径来实现:


// Creamos el archivo config.ini

// en la misma carpeta del ejecutable

 

iniFile := TIniFile.Create(ExtractFilePath(ParamStr(0))+'config.ini'));

如何读取 .ini 文件

TIniFile类对每个键值都有几个读取方法。


ReadString:读取一串字符。

ReadFloat - 读取浮点值。

ReadInteger:读取一个整数值。

ReadDate:读取一个日期值

对于每种数据类型,依此类推。


现在如果我们要求读取一个不存在的密钥会发生什么?为此,所有读取方法都有一个默认值,如果键不存在,则可以使用该默认值。


例如,ReadString 声明为:


function ReadString(const Section, Ident, Default: String): String; override;


 

Nombre := ReadString('DatosPersonales','nombre','sin datos');

如何写入 .ini 文件

TIniFile 有一个 write 方法对应每个 read 方法。对于每种数据类型,它们是 WriteString、WriteBool、WriteInteger 等。


例如,如果我们想在每次关闭表单时保存它的位置,我们将在onClose事件中放置以下代码:


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

 var

   Config: TIniFile;

 begin

   Config := TIniFile.Create(ExtractFilePath(ParamStr(0))+'config.ini'));

 try

     with Config do

     begin

       WriteInteger('Pposicion','Top', Top) ;

       WriteInteger('Pposicion','Left', Left) ;

       WriteInteger('Pposicion','Width', Width) ;

       WriteInteger('Pposicion','Height', Height) ;

     end;

   finally

     Config.Free;

   end;

 end;

INI 文件的限制和缺点

TIniFile 类使用 Windows API,因此它对 INI 文件施加了 64 Kb 的限制。如果需要存储超过 64 KB 的数据,则必须使用 TMemIniFile。


如果节大于 8Kb,则可能会出现另一个问题。解决该问题的一种方法是编写自己的 ReadSection 方法版本。



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.066873073577881 seconds