• Delphi 中对 ini 文件操作


    Delphi 中对 ini 文件操作

    一、INI文件的结构:

    ;注释
    [小节名]
    关键字=值
      ini 文件允许有多个小节,每个小节又允许有多个关键字,"="后面是该关键字的值。
      ini 文件中可以用分号";"开头来注释一行。

    二、定义 TIniFile 对象


    Uses
    IniFiles;
    var
    MyIniFile: Tinifile;
    然后,就可以对变量 MyIniFile 进行创建、打开、读写、关闭等操作了。

     

    三、打开INI文件
    MyIniFile := TIniFile.Create('C:\MyProg\Setting.ini');

      上面这一行语句会将变量 MyIniFile 与文件 C:\MyProg\Setting.ini 建立联系,然后,就可以通过变量 MyIniFile 来读写 C:\MyProg\Setting.ini 文件中的信息了。

      如果括号中的文件名没有使用绝对路径的话,那么程序(其实是 Windows API 在操作这个文件)会在 Windows 目录中查找 Setting.ini,如果找不到,则操作失败,程序不会在其他任何地方搜索 Setting.ini 这个文件,包括程序本身所在的目录。如果你要操作非 Windows 目录中的 ini 文件,请指明文件的绝对路径。比如上面的 C:\MyProg\Setting.ini,或者用下面的方法获取程序所在目录中的 ini 文件:
    var
    MyIniFileName: String;
    begin
    MyIniFileName := ExtractFilePath(Application.ExeName) + 'Setting.ini';
    MyIniFile := TIniFile.Create(MyIniFileName);
    //...
    end;

    四、读取关键字
    TIniFile 类提供的读取 ini 文件的方法:
    ReadString();         //读取字符串型值
    ReadBool();           //读取布尔型值
    ReadInteger();        //读取整数型值
    ReadFloat();          //读取浮点数型值
    ReadDate();           //读取日期型值
    ReadTime();           //读取时间型值
    ReadDateTime();       //读取日期时间型值
    ReadBinaryStream()    //读取二进制数据流


      其实 ini 文件中只能存储字符串型的数据,因为 ini 文件本身就是文本文件,里面只能存放文本内容。上面介绍的 ini 读取操作中,有读取整数型的,有读取布尔型的,有读取日期时间型的,其实都是先读取其字符串值,然后再进行类型转换得到的结果(看一下这些方法的源文件就知道了)。
      这些方法的参数基本相同,只是最后一个参数“缺省值”的类型可能不同,不同的方法用不同的缺省值类型,比如读取字符串型值,其缺省值就是字符串类型:
    var
    S: String;
    begin
    S := MyIniFile.ReadString('小节名', '关键字', '缺省值');
    end;

      调用不同的方法,可以得到不同类型的值,其中缺省值为读取该关键字失败时返回的结果。
     

    五、写入关键字

      TIniFile 类提供的写入 ini 文件的方法:

    WriteBool();           //读取布尔型值
    WriteString();         //读取字符串型值
    WriteInteger();        //读取整数型值
    WriteFloat();          //读取浮点数型值
    WriteDate();           //读取日期型值
    WriteTime();           //读取时间型值
    WriteDateTime();       //读取日期时间型值
    WriteBinaryStream()    //读取二进制数据流

      请参照读取方法中的介绍,这里不再多讲。当要写入的 ini 文件不存在时,这些方法会自动创建该 ini 文件。
    var
    S: String;
    begin
    S := '要写入的数据';
    MyIniFile.WriteString('小节名', '关键字', S);


    六、其它关键字操作
    DeleteKey('小节名','关键字');           //删除指定小节中的指定关键字
    ValueExists('小节名','关键字');         //判断指定小节中的指定关键字是否存在

    七、小节操作
    采本站者,必打击者

      要想增加一个小节,可以用写入关键字的方法来实现,在写入关键字时,如果小节不存在,则会自动创建改小节。其他小节操作方法如下:

    EraseSection('小节名');                         //删除指定的小节
    SectionExists(('小节名');                       //判断一个小节是否存在
    ReadSection('小节名',TStrings变量);             //读取指定小节中的所有关键字,通过 TStrings变量 返回结果
    ReadSections(TStrings变量);                     //读取 ini 文件中的所有小节,通过 TStrings变量 返回结果
    ReadSectionVaules('小节名',TStrings变量);       //读取指定小节中的所有行(关键字=值),通过 TStrings变量 返回结果
    上面的 TStrings变量 是一个引用参数,这些方法中对该参数做的任何修改都会返回到调用函数中去。

    八、释放
      当你使用完 MyIniFile,要及时释放 MyIniFile,以节约内存。你可以使用下面的结构来操作 MyIniFile:

    var
    MyIniFile: TIniFile;
    begin
    MyIniFileName := ExtractFilePath(Application.ExeName) + 'Setting.ini';
    MyIniFile := TIniFile.Create(MyIniFileName);
    try
        //操作 MyIniFile
    finally
        MyiniFile.Free;
    end;
    end;
     

      Delphi 中不允许存在非法的关键字(即没有等号"="的关键字行),这样的关键字是无法用 TiniFile 类来操作的。如果你要操作这样的特殊关键字行,请使用 Windows API 直接操作,它可以绕过 Delphi 的合法性检验。

  • 相关阅读:
    离场飞越转弯全家福
    画一个PBN大角度飞越转弯保护区
    画一个小角度飞越转弯保护区
    Point Estimation
    Random variable
    心流
    Survey sampling
    Distribution
    数学分析总结
    topological space
  • 原文地址:https://www.cnblogs.com/edrp/p/1913067.html
Copyright © 2020-2023  润新知