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:\temp\test.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.

delphi对ini文件的操作(转载 万一)的更多相关文章

  1. Delphi对ini文件的操作

    一.INI文件的结构:; 注释[小节名]关键字=值 INI文件允许有多个小节,每个小节又允许有多个关键字, “=”后面是该关键字的值. 值的类型有三种:字符串.整型数值和布尔值.其中字符串存贮在INI ...

  2. Delphi 对ini文件的操作

    界面如图: 代码如下: unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Vari ...

  3. Delphi关于记录文件的操作

    http://www.cnblogs.com/railgunman/archive/2010/08/16/1801004.html Delphi关于记录文件的操作   本例子几个变量的说明TFileR ...

  4. delphi中ini 文件操作记要(1): 使用 TIniFile

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  5. C#实现.ini文件读写操作

    1.ini文件是什么?        见百度百科:https://baike.baidu.com/item/ini%E6%96%87%E4%BB%B6/9718973?fr=aladdin 2.C#语 ...

  6. VC++ 实现INI文件读写操作

    转载:https://blog.csdn.net/fan380485838/article/details/73188420 在实际项目开发中,会用ini配置文件,在此总结一下对ini读写操作 一:读 ...

  7. delphi读取ini文件

    ini文件在系统配置及应用程序参数保存与设置方面,具有很重要的作用,所以可视化的编程一族,如vb.vc.vfp.delphi等都提供了读写ini文件的方法,其中delphi中操作ini文件,最为简洁, ...

  8. delphi 基础之三 文件流操作

    文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的, ...

  9. Delphi 实现Ini文件参数与TEdit和TCheckBox绑定(TSimpleParam)

    在实际工作中,常遇到对Ini参数的修改,显示与保存问题. 如果手工写代码,会有很大的工作量. 本例把ini文件的参数与控件绑定起来,以达到方便使用的目的. 本例程共有2个单元 uSimpleParam ...

随机推荐

  1. Qt 属性

      Qt提供了一套和一些编译器提供商也提供的属性系统类似的完善的属性系统.然而,作为一个不依赖编译器和平台的库,Qt不能依赖像__property或者[property]那样的非标准编译器特征.我们的 ...

  2. 关于cocostudio加载UI json CCUIHELPER未声明问题

    查看官方的文档,在文档的最后添加了如何加载项目.如下代码: UILayer* ul =UILayer::create(); ul->addWidget(CCUIHELPER->create ...

  3. U盘启动安装CentOS 6.3

    无光驱U盘启动安装CentOS 6.3的一些必要条件: 1.主板要支持U盘启动 2.8G的U盘 3.UltraISO软件 http://www.linuxidc.com/Linux/2010-03/2 ...

  4. 模仿ios下的coverflow

    Android高级图片滚动控件,编写3D版的图片轮播器 http://blog.csdn.net/guolin_blog/article/details/17482089 A cool Open So ...

  5. 2015 UESTC Winter Training #10【Northeastern Europe 2009】

    2015 UESTC Winter Training #10 Northeastern Europe 2009 最近集训都不在状态啊,嘛,上午一直在练车,比赛时也是刚吃过午饭,状态不好也难免,下次比赛 ...

  6. 动态代理 Proxy InvocationHandler

      前奏 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等. 代理类与委托类之间通常 ...

  7. 学习CSS一些事(上)

    p.s:这是我在学习中总结出来知识,如有不对,请多包涵.谢谢. CSS样式:行内样式,内部样式,外部样式,他们的优先级是:行内,内部,外部,遵循就近原则. 一.HTML+CSS布局分为三大类,一是流式 ...

  8. Wpf ListBox数据绑定实例1--绑定字典集合

    1.使用ListBox绑定Dictionary字典数据 ListBox常用事件SelectionChanged private void bindListBox() { Dictionary<s ...

  9. Android VideoView

    这两天公司要让做一个播放视频的小Demo,于是网上学习了下VideoView的使用方法. 先看布局文件,很简单 就是一个VideoView和两个ImageView <RelativeLayout ...

  10. Hibernate 持久化对象的状态

    持久化对象有3种状态:1.持久化状态      2.临时状态      3.游离状态 Session 的特定方法能使对象从一个状态转换到另一个状态临时对象(transient)•    在使用代理主键 ...