开发上位机经常会遇到要保存一些参数和数据到文件,其中ini、json、xml是最常用的格式。codetyphon有现成的控件可以,他们是IniPropStorage、JSONPropStorage、XMLPropStorage。通过简单的设置就可以实现配置文件的存储。
IniPropStorage主要属性:
1.property StoredValues: TStoredValues;
存储的参数名和键值都在这里添加设置。
2.property IniFileName: string; Name of the file where the property data is saved in INI format.
要读取或存储的ini文件名称,支持相对路径。
3.property IniSection: string; The section on the INI file where values are to be kept.
设置设定参数所在的区域,理解就是参数的父节点名。
4.property Active: Boolean;This determines if the object is active or not.
这个建议设置成false,true运行发现有一些问题,原因不清楚。
程序设计
1.新建application项目,拖拽控件,使界面如下:
2.设置主要属性:
Active=false;
IniFileName=config.ini;可以自己手动创建该文件,也可以让程序运行时自动创建;
IniSection=Setup;
StoredValues设置如下图:
程序代码
unit main;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
IniPropStorage, ExtCtrls, Buttons, kedits;
type
{ TForm1 }
TForm1 = class(TForm)
btnWriteINIFile: TBitBtn;
btnExit: TButton;
btnReadINIFile: TBitBtn;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
Edit2: TKNumberEdit;
Edit3: TKNumberEdit;
Edit4: TKNumberEdit;
Edit6: TLabeledEdit;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
IniStorage1: TIniPropStorage;
Edit1: TKNumberEdit;
Edit5: TLabeledEdit;
procedure btnExitClick(Sender: TObject);
procedure btnReadINIFileClick(Sender: TObject);
procedure btnWriteINIFileClick(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.frm}
{ TForm1 }
procedure TForm1.btnExitClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.btnReadINIFileClick(Sender: TObject);
var
h:String;
begin
h:='';
CheckBox2.Checked:=IniStorage1.ReadBoolean('AutoStart',False);
Edit2.ValueAsInt:=IniStorage1.ReadInteger('Left',0);
Edit4.Value:=IniStorage1.ReadString('Height','0.0').ToDouble;
Edit6.Text:= IniStorage1.ReadString('Name','');
end;
procedure TForm1.btnWriteINIFileClick(Sender: TObject);
begin
IniStorage1.WriteBoolean('AutoStart',CheckBox1.Checked);
IniStorage1.WriteInteger('Left',Edit1.ValueAsInt);
IniStorage1.WriteString('Height',Edit3.ValueAsText);
IniStorage1.WriteString('Name',Edit5.Text);
//IniStorage1.Save;
end;
end.
运行效果
JSON和XML文件操作与上面基本一样,不在细述。
···