一、配置文件

.ini 文件是基于文本类型的格式文件,用于存储程序初始化和配置数据。

.ini文件是有段(Sections)和键(key)组成的,每个文件可以有 n个段(每个段有方括号括起来),每个段可以有m个键,大致格式如下:

[secontion]

KeyName1=Value1;

;comment

KeyName2=Value2;

段名和键名在使用中是不区分大小写得,但是名字中不能有空格。

键可以存储integer,string,float,boolean,datatime等数据类型。

如我写的服务配置文件连接数据库的例子:

[Oralce]

con_scyx=Provider=MSDAORA.1;Password=ygscyx;User ID=scyx;Data Source=ygdbsrv;Persist Security Info=True

con_erp=Provider=MSDAORA.1;Password=ERP;User ID=ERP;Data Source=ORCL;Persist Security Info=True

二、读取配置文件

在Delphi中有一个TIniFile的类用于访问.ini文件,该类定义在IniFiles.pas文件中,具体使用如下

一、定义

1、在Interface的Uses节增加IniFiles;

2、在Var变量定义部分增加一行:myinifile:Tinifile;

然后,就可以对变量myinifile进行创建、打开、读取、写入等操作了。

二、打开INI文件

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

myinifile:=Tinifile.Create(filename);

该语句将会为变量myinifile与具体的文件program.ini建立联系,然后,就可以通过变量myinifile,来读写program.ini文件中的关键字的值了。如果括号中的文件名没有指明路径的话,那么这个Program.ini文件会存储在Windows目录中,把Program.ini文件存储在应用程序当前目录中的方法是:为其指定完整的路径及文件名。

三、读取关键字的值

针对INI文件支持的字符串、整型数值、布尔值三种数据类型,TINIfiles类提供了三种不同的对象方法来读取INI文件中关键字的值。假设已定义变量vs、vi、vb分别为string、integer、boolean类型。其中缺省值为该INI文件不存在该关键字时返回的缺省值。

vs:=myinifile.Readstring('小节名','关键字',缺省值);

vi:=myinifile.Readinteger('小节名','关键字',缺省值);

vb:=myinifile.Readbool('小节名','关键字',缺省值);

四、写入INI文件

同样的,TInifile类也提供了三种不同的对象方法,向INI文件写入字符串、整型数及布尔类型的关键字。

myinifile.writestring('小节名','关键字',变量或字符串值);

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

myinifile.writebool('小节名','关键字',变量或True或False);

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

五、删除关键字

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

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

六、小节操作

增加一个小节可用写入的方法来完成

myinifile.EraseSection('小节名');                     // 删除一个小节

myinifile.readsection('小节名',TStrings变量);   将小节中的所有关键字名读取至一个字符串列表变量中;myinifile.readsections(TStrings变量);              将INI文件中所有小节名读取至一个字符串列表变量中去。

myinifile.readsectionvalues('小节名',TStrings变量); 将小节的键值对读取至一个字符串列表变量中去。

七、释放

myinifile.Destroy;   也可以使用FreeAndNil(myinifile);

我写的读取配置文件数据库的例子

procedure TDBMonitorService.ServiceCreate(Sender: TObject);
var
pFile: array[0..255] of char;
begin
try
GetModuleFileName(0,pFile,Sizeof(pFile));//获取路径
g_Path := ExtractFileDir(pFile); //获得服务的路径  从文件名中获取目录名(文件不在根目录下时取得的值后没有“/”,在根目录时一样,都是盘符,例如“C:/”)   
with tinifile.Create(g_path+'\config.ini') do
try
ConScyx := ReadString('Oralce','con_scyx','');
ConErp := ReadString('Oralce','con_erp','');
finally
Free;
end;

con_scyx:=TADOConnection.Create(nil);
con_scyx.ConnectionString:=ConScyx;
con_scyx.LoginPrompt:=false;

con_erp:=TADOConnection.Create(nil);
con_erp.ConnectionString:=ConErp;
con_erp.LoginPrompt:=false;

qry_scyx:=TADOQuery.Create(nil);
qry_scyx.Connection:=con_scyx;
qry_erp:=TADOQuery.Create(nil);
qry_erp.Connection:=con_erp;

except
on e:Exception do
begin
WriteLog(e.Message+'->服务启动错误!');
Exit;
end;
end;
end;

delphi 中配置文件的使用(*.ini)和TIniFile 用法的更多相关文章

  1. Delphi 中 FindWindow 和 FindWindowEx 的语法和用法

    FindWindow(lpClassName,        {窗口的类名}lpWindowName: PChar {窗口的标题}): HWND;              {返回窗口的句柄; 失败返 ...

  2. Delphi 中的全局快捷键+给指定窗体发送按键

    [背景] 公司做视频影像采集,平时采集图像的时候都需要打开采集窗口,然后需要开着采集窗口来进行图像采集.同事问我能不能做一个全局快捷键,哪怕我没有操作也可以采集图像.说干就干,一直想做全局快捷键了,网 ...

  3. [php-src]理解Php内核中的函数与INI

    内容均以php-5.6.14为例. 一. 函数结构 内核中定义一个php函数使用 PHP_FUNCTION 宏 包装,扩展也不例外,该宏在 ./main/php.h:343 有着一系列类似以 PHP ...

  4. delphi中单独编译pas生成dcu文件

    delphi中单独编译pas生成dcu文件 在网上下载了一个带源码的组件,结果碰到提示说缺少xxx.dcu.一看它的目录下确实没有,那能不能生成一个呢? 当然可以! 方法是使用delphi的安装目录\ ...

  5. python中configparser模块读取ini文件

    python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(se ...

  6. 配置文件yaml和ini

    前言 本文主要介绍配置文件yaml和ini的读取. 一.yaml文件 YAML是一个可读性高,易于理解,用来表达数据序列化的格式.语法与python的语法类似.文件后缀  .yaml 下面是yaml文 ...

  7. Delphi中stringlist分割字符串的用法

    Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaT ...

  8. delphi中exit,abort,break,continue 的区别

    from:http://www.cnblogs.com/taofengli288/archive/2011/09/05/2167553.html delphi中表示跳出的有break,continue ...

  9. Delphi中使用比较少的一些语法

    本文是为了加强记忆而写,这里写的大多数内容都是在编程的日常工作中使用频率不高的东西,但是又十分重要. ---Murphy 1,构造和析构函数: a,构造函数: 一般基于TComponent组件的派生类 ...

随机推荐

  1. windows盘符操作

    subst subst x: /d subst y: e:\

  2. python——unpack问题 ocr_recognize timeout , exception:unpack requires a string argument of length 46

    rObjBuff = "".join(unpack('=%ds' % ObjLen, recv_buf[6+i*ObjLen:6+(i+1)*ObjLen]))score, bbo ...

  3. 在github上建立jekyll blog

    1.git常用命令(简易介绍见http://rogerdudler.github.io/git-guide/index.zh.html) git init     #创建新的git仓库 git clo ...

  4. Spark on Yarn 集群运行要点

    实验版本:spark-1.6.0-bin-hadoop2.6 本次实验主要是想在已有的Hadoop集群上使用Spark,无需过多配置 1.下载&解压到一台使用spark的机器上即可 2.修改配 ...

  5. doT js模板入门 2

    doT js 使用{{}} 非常相似于JSP,所以用起来感觉非常亲切,非常顺手 {{–><% }}–>%> 比如: <div id="evaluationtmp ...

  6. putty英文乱码---DM8168_ETV_V1.1(路视明)

    配置參照http://jingyan.baidu.com/article/c74d600048ed620f6a595d12.html 注意事项: 假设出现 英文也乱码.那么就是波特率设置的问题,应该这 ...

  7. 基于Away3D实现全景的相机控制器。

    最近研究打算做个全景的Demo,发现Away3D本身的天空盒跟全景属于两种完全不同东西.最后只能基于HoverController来扩展(原因是HoverController能提供的距离控制,类似拉近 ...

  8. C++语言基础(13)-抽象类和纯虚函数

    一.基本语法 在C++中,可以将虚函数声明为纯虚函数,语法格式为: ; 纯虚函数没有函数体,只有函数声明,在虚函数声明的结尾加上=0,表明此函数为纯虚函数. 最后的=0并不表示函数返回值为0,它只起形 ...

  9. nginx configure参数

    下面是nginx源码程序的configure参数: --prefix= 指向安装目录.默认为:/usr/local/nginx --sbin-path= 指定执行程序文件存放位置.默认为:prefix ...

  10. python学习之函数返回值

    python中函数返回值的方式有2种: 1.return语句 说明:return语句执行完后,函数后续的代码将不会被执行 2.yield语句 说明:yield语句返回的是一个迭代器对象,可以通过nex ...