电脑爱好者之家

delphi读取ini文件

时间:2012-12-14 12:13来源:未知 作者:熊猫蜀黍 点击:
delphi读取ini文件 INI文件在系统配置及应用程序参数保存与设置方面,具有很重要的作用,所以 可视化的编程一族,如VB、VC、VFP、Delphi等都提供了读写INI文件的方法,其 中Delphi中操作INI文件,最为简洁,这是因为Delphi提供了一个TInifile类, 使我们可以

delphi读取ini文件

INI文件在系统配置及应用程序参数保存与设置方面,具有很重要的作用,所以

可视化的编程一族,如VB、VC、VFP、Delphi等都提供了读写INI文件的方法,其

中Delphi中操作INI文件,最为简洁,这是因为Delphi提供了一个TInifile类,

使我们可以非常灵活的处理INI文件

一.INI文件的结构

[小节名]ini文件

        关键字1=值1

        关键子2=值2

INI文件允许有多个小节,每个小节又允许有多个关键字,“=”后面是该关键字

的值。

值的类型有三种:字符串、整型数值和布尔值。其中字符串存贮在INI文件中时

没有引号,布尔真值用1表示,布尔假值用0表示。

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

入等操作了。
三、打开INI文件
myinifile:=Tinifile.create(program.ini);
上面这一行语句将会为变量myinifile与具体的文件program.ini建立联系,然后

,就可以通过变量myinifile,来读写program.ini文件中的关键字的值了。

值得注意的是,如果括号中的文件名没有指明路径的话,那么这个Program.ini

文件会存储在Windows目录中,把Program.ini文件存储在应用程序当前目录中的

方法是:为其指定完整的路径及文件名。下面的两条语句可以完成这个功能:

Filename:=ExtractFilePath(Paramstr(0))+program.ini;

myinifile:=Tinifile.Create(filename);

五、写入INI文件
同样的,TInifile类也提供了三种不同的对象方法,向INI文件写入字符串、整

型数及布尔类型的关键字。


myinifile.writestring(小节名,关键字,变量或字符串值);
myinifile.writeinteger(小节名,关键字,变量或整型数值);
myinifile.writebool(小节名,关键字,变量或True或False);
当这个INI文件不存在时,上面的语句还会自动创建该INI文件。

六、删除关键字
除了可用写入方法增加一个关键字,Tinifile类还提供了一个删除关键字的对象

方法:

myinifile.DeleteKey(小节名,关键字);
七、小节操作
增加一个小节可用写入的方法来完成,删除一个小节可用下面的对象方法:


myinifile.EraseSection(小节名);
另外Tinifile类还提供了三种对象方法来对小节进行操作:

myinifile.readsection(小节名,TStrings变量);可将指定小节中的所有关键字

名读取至一个字符串列表变量中;

myinifile.readsections(TStrings变量);可将INI文件中所有小节名读取至一个

字符串列表变量中去。

myinifile.readsectionvalues(小节名,TStrings变量);可将INI文件中指定小节

的所有行(包括关键字、=、值)读取至一个字符串列表变量中去。

八、释放
在适当的位置用下面的语句释放myinifile:
myinifile.distory;
下面是具体例子。源代码如下。创建了一个myini.ini文件,有一个名为newini

的小节,有3个关键字“用户名称”“已运行时间”“是否正式用户”。运行效

果,可以在edit1里边填入“用户名称”;edit2显示时间,不可以改变数值;

checkbox1通过打勾,保存时间和“用户名称”进入myini.ini文件里边,重新打

开应用程序时,显示的时保存下来的时间和填入的“用户名称”,如果在

myini.ini文件里边修改,效果和在程序运行过程中修改时一样的。unit Unit1;


interface


uses

   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms,

   Dialogs,inifiles, StdCtrls, ExtCtrls;

   {调用inifiles 类}


type

   TForm1 = class(TForm)

     Label1: TLabel;

     Label2: TLabel;

     Label3: TLabel;

     Edit1: TEdit;

     Edit2: TEdit;

     Timer1: TTimer;

    CheckBox1: TCheckBox;

     procedure FormCreate(Sender: TObject);

     procedure FormDestroy(Sender: TObject);

     procedure Timer1Timer(Sender: TObject);

   private

     { Private declarations }

   public

     { Public declarations }

   end;


var

   Form1: TForm1;


implementation

var

myinifile:TInifile;

{定义一个类的实例}

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);


var

filename:string;


begin

{下面两行的书写形式,在应用程序的路径下创建ini文件}

filename:=ExtractFilePath(paramstr(0))+myini.ini;

myinifile:=TInifile.Create(filename);

edit1.Text:=myinifile.ReadString(newini,用户名称,胡长浩);
    CheckBox1: TCheckBox;

     procedure FormCreate(Sender: TObject);

     procedure FormDestroy(Sender: TObject);

     procedure Timer1Timer(Sender: TObject);

   private

     { Private declarations }

   public

     { Public declarations }

   end;


var

   Form1: TForm1;


implementation

var

myinifile:TInifile;

{定义一个类的实例}

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);


var

filename:string;


begin

{下面两行的书写形式,在应用程序的路径下创建ini文件}

filename:=ExtractFilePath(paramstr(0))+myini.ini;

myinifile:=TInifile.Create(filename);

edit1.Text:=myinifile.ReadString(newini,用户名称,胡长浩);
利用INI文件实现界面无闪烁多语言切换

 

一、引言

越来越多的程序使用了多国语言切换,虽然DELPHI自带多语言包的添加和配置,

但是那种方法在切换语言时界面会出现闪烁,而且实现起来很麻烦,这里我介绍

给大家的是利用INI文件来读取界面的语种文字,用这种方法,不但简单易行,

而且在切换的时候不会出现界面的闪烁。

二、InI文件格式说明

1、语种定义

[Language] //语言

DefaultLang = ChineseGB //界面的默认语种(InI文件名,不带扩展名)

Language = 语种 //菜单标题

ChineseGB = 简体中文 //相应语种文件名

ChineseBig = 繁体中文

English = 英文

⑴ 如果DefaultLang项没有设置,则为语种目录中所寻找到的InI的第一个文件

,做为当前界面语种,所有Ini文件都要设置成一样;

⑵ Language为菜单界面上所显示的标题,不设置时,默认为‘Language’;

⑶ 如果Language以下项没有设置,则相应语种的菜单标题为文件名(不带扩展

名)。

2、窗体界面定义

[FormName] //需要变换的窗口

.Caption = 演示窗体 //本窗口的属性,表示为:[窗口名].属性名 = 语言

Button1.Hint = 按钮说明 //控件的属性,表示为:控件名.属性名 = 语言

ComboBox1.Items = 简体中文||英文 //其中“||”为分隔符

注:⑴ 在InI文件中每行“//”开始的说明文字不要输入;

⑵ 对继承自TStrings的属性,其各个项目之间需用“||”分隔;

⑶ 设计思想来源于KeyZhang所编写的《多语言切换函数 For Delphi》组件。

三、实现原理

RTTI的基本设计思想是在运行时访问给定数据类型的信息,该类型可以是类也可

以是简单的Pascal数据类型(int、string、char等)。本文便是通过RTTI在运

行期,获取组件的相应属性,并进行动态设置,达到多语言切换功能。


利用INI文件实现界面无闪烁多语言切换

(责任编辑:熊猫蜀黍)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片