zoukankan      html  css  js  c++  java
  • delphi 中配置文件的使用(*.ini)和TIniFile 用法

    一、配置文件 
    
    .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;
  • 相关阅读:
    博客园的自定义皮肤
    为自己的审美观感到惭愧
    关于GitHub的Hello Word
    使用Windows Live Writer撰写的第一篇博文
    正式入驻博客园了
    一个使用 Web Components 的音乐播放器: MelodyPlayer
    一个(伪)MaterialDesign风格的博客园皮肤
    从零开始,做一个NodeJS博客(一):Heroku上的最简NodeJS服务器
    从零开始,做一个NodeJS博客(零):整体规(chui)划(niu)
    在 Xamarin.Android 中使用 Notification.Builder 构建通知
  • 原文地址:https://www.cnblogs.com/jijm123/p/11299147.html
Copyright © 2011-2022 走看看