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