zoukankan      html  css  js  c++  java
  • delphi对ini文件的操作(转载 万一)

    ini 文件操作记要(1): 使用 TIniFile
    unit Unit1;
    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;
    type
    TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Button5: TButton;
        Button6: TButton;
        Button7: TButton;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Button5Click(Sender: TObject);
        procedure Button6Click(Sender: TObject);
        procedure Button7Click(Sender: TObject);
    private
        { Private declarations }
    public
        { Public declarations }
    end;
    var
    Form1: TForm1;
    implementation
    {$R *.dfm}
    uses IniFiles; {uses 包含 TIniFile 的单元}
    var
    ini: TIniFile;
    path: string;         {ini 文件路径}
    Section,Key: string; {分别表示 ini 文件的小节与关键字}
    {
    ini文件结构:
    ;注释
    [小节名]
    关键字=值
    INI文件支持: string、integer、boolean、Date、Time、DateTime、Double 与二进制类型
    string 值没有引号
    boolean 的真假用 1、0 表示
    }
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    path := ChangeFileExt(ParamStr(0),'.ini');
    ini := TIniFile.Create(path); {ini 对象建立需要文件路径参数, 如果缺少路径会默认Windows目录}
    end;
    //写入 ini 文件:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Section := 'AAA';
    Key := 'AString';
    ini.WriteString(Section,Key,'AAA-String');
    Key := 'AInteger';
    ini.WriteInteger(Section,Key,111);
    Key := 'ABoolean';
    ini.WriteBool(Section,Key,True);
    Key := 'ADate';
    ini.WriteDate(Section,Key,Now);
    Key := 'ATime';
    ini.WriteTime(Section,Key,Now);
    Key := 'ADateTime';
    ini.WriteDateTime(Section,Key,Now);
    Key := 'ADouble';
    ini.WriteFloat(Section,Key,Pi);

    Section := 'BBB';
    Key := 'BString';
    ini.WriteString(Section,Key,'BBB-String');
    Key := 'BInteger';
    ini.WriteInteger(Section,Key,222);
    Key := 'BBoolean';
    ini.WriteBool(Section,Key,True);
    Key := 'BDate';
    ini.WriteDate(Section,Key,Now);
    Key := 'BTime';
    ini.WriteTime(Section,Key,Now);
    Key := 'BDateTime';
    ini.WriteDateTime(Section,Key,Now);
    Key := 'BDouble';
    ini.WriteFloat(Section,Key,Pi);

    Section := 'CCC';
    Key := 'CString';
    ini.WriteString(Section,Key,'CCC-String');
    Key := 'CInteger';
    ini.WriteInteger(Section,Key,333);
    Key := 'CBoolean';
    ini.WriteBool(Section,Key,False);
    Key := 'CDate';
    ini.WriteDate(Section,Key,Now);
    Key := 'CTime';
    ini.WriteTime(Section,Key,Now);
    Key := 'CDateTime';
    ini.WriteDateTime(Section,Key,Now);
    Key := 'CDouble';
    ini.WriteFloat(Section,Key,Pi);
    {写入结果:
    [AAA]
    AString=AAA-String
    AInteger=111
    ABoolean=1
    ADate=2007-12-17
    ATime=22:06:23
    ADateTime=2007-12-17 22:06:23
    ADouble=3.14159265358979
    [BBB]
    BString=BBB-String
    BInteger=222
    BBoolean=1
    BDate=2007-12-17
    BTime=22:06:23
    BDateTime=2007-12-17 22:06:23
    BDouble=3.14159265358979
    [CCC]
    CString=CCC-String
    CInteger=333
    CBoolean=0
    CDate=2007-12-17
    CTime=22:06:23
    CDateTime=2007-12-17 22:06:23
    CDouble=3.14159265358979
    }
    end;
    //读取 ini 文件:
    procedure TForm1.Button2Click(Sender: TObject);
    var
    s: string;
    i: Integer;
    b: Boolean;
    f: Double;
    d: TDate;
    t: TTime;
    dt: TDateTime;
    begin
    s := ini.ReadString('BBB','BString',''); {最后一个参数是默认值}
    i := ini.ReadInteger('BBB','BInteger',0);
    b := ini.ReadBool('BBB','BBoolean',False);
    f := ini.ReadFloat('BBB','BDouble',0);
    d := ini.ReadDate('BBB','BDate',Now);
    t := ini.ReadTime('BBB','BTime',Now);
    dt := ini.ReadDateTime('BBB','BDateTime',Now);
    ShowMessage(s);                 {BBB-String}
    ShowMessage(IntToStr(i));       {222}
    ShowMessage(BoolToStr(b));      {-1(True)}
    ShowMessage(FloatToStr(f));     {3.14159265358979}
    ShowMessage(DateToStr(d));      {2007-12-17}
    ShowMessage(TimeToStr(t));      {22:06:23}
    ShowMessage(DateTimeToStr(dt)); {2007-12-17 22:06:23}
    end;
    //读入所有小节名到 TStrings:
    procedure TForm1.Button3Click(Sender: TObject);
    var
    List: TStrings;
    begin
    List := TStringList.Create;
    ini.ReadSections(List);
    ShowMessage(List.Text);
    {
        AAA
        BBB
        CCC
    }
    List.Free;
    end;
    //读入指定小节的所有关键字到 TStrings:
    procedure TForm1.Button4Click(Sender: TObject);
    var
    List: TStrings;
    begin
    List := TStringList.Create;
    ini.ReadSection('AAA',List);
    ShowMessage(List.Text);
    {
        AString
        AInteger
        ABoolean
        ADate
        ATime
        ADateTime
        ADouble
    }
    List.Free;
    end;
    //读入指定小节的所有关键字与值到 TStrings:
    procedure TForm1.Button5Click(Sender: TObject);
    var
    List: TStrings;
    begin
    List := TStringList.Create;
    ini.ReadSectionValues('BBB',List);
    ShowMessage(List.Text);
    {
        BString=BBB-String
        BInteger=222
        BBoolean=1
        BDate=2007-12-17
        BTime=22:06:23
        BDateTime=2007-12-17 22:06:23
        BDouble=3.14159265358979
    }
    List.Free;
    end;
    //删除与添加
    procedure TForm1.Button6Click(Sender: TObject);
    begin
    ini.DeleteKey('BBB','BString'); {删除关键字}
    ini.EraseSection('CCC');         {删除小节}
    // ini.UpdateFile;                {保存到文件}
    {添加小节与关键字或修改值, 直接写入即可}
    end;
    //其他功能
    procedure TForm1.Button7Click(Sender: TObject);
    var
    b: Boolean;
    s: string;
    begin
    b := ini.SectionExists('DDD');         {判断某个小节是否存在}
    b := ini.ValueExists('AAA','AString'); {判断某个关键字的值是否存在}
    s := ini.FileName;                     {获取文件名}
    end;
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    ini.Free;
    end;
    end.

    ini 文件操作记要(2): 使用 TMemIniFile
    unit Unit1;
    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;
    type
    TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
    private
        { Private declarations }
    public
        { Public declarations }
    end;
    var
    Form1: TForm1;
    implementation
    {$R *.dfm}
    uses
    IniFiles;
    var
    ini: TMemIniFile;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    ini := TMemIniFile.Create('c: emp est.ini');
    end;
    //写入
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ini.WriteString('AAA','A1','AAA-String');
    //其他也都和 IniFile 一样使用
    // ini.WriteInteger();
    // ini.WriteBool();
    // ini.WriteDate();
    // ini.WriteTime();
    // ini.WriteDateTime();
    // ini.WriteFloat();
    // ini.WriteBinaryStream();
    //ini.UpdateFile; //因为 TMemIniFile 是内存操作, 这样才能保存到文件
    end;
    //读出及其他
    procedure TForm1.Button2Click(Sender: TObject);
    var
    s: string;
    begin
    s := ini.ReadString('AAA','A1','默认值');
    ShowMessage(s); //AAA-String
    //其他读入命令也都和 IniFile 一样使用
    // ini.ReadInteger();
    // ini.ReadBool();
    // ini.ReadDate();
    // ini.ReadTime();
    // ini.ReadDateTime();
    // ini.ReadFloat();
    // ini.ReadBinaryStream();
    //还有四个常用方法也是和 IniFile 一样的
    //ini.DeleteKey();
    //ini.EraseSection();
    //ini.ReadSection();
    //ini.ReadSections();
    //另外有三个 IniFile 中没有的方法也容易使用
    //ini.GetStrings(List: TStrings);
    //ini.SetStrings(List: TStrings);
    //ini.Rename(const FileName: string; Reload: Boolean);
    //其中 Rename 中的第二个 Boolean 参数如果为 True 将会刷新读入
    end;
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    ini.Free;
    end;
    end.

  • 相关阅读:
    react typescript 子组件调用父组件
    Mongodb query查询
    CentOS虚拟机不能联网状况下yum方式从本地安装软件包(转载的)
    CentOS6.5 mini开启网络
    MySQL的InnoDB表如何设计主键索引-转自淘宝MySQL经典案例
    linux下安装mysql-community后起不来
    Eclipse 快捷键
    maven下载jta失败,自己本地安装jta库
    spring配置文件中id与name
    @autowired和@resource的区别
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/3315485.html
Copyright © 2011-2022 走看看