在我的应用程序中,我将一些编辑值保存在Tstringlist中,代码如下:
procedure TForm1.Button3Click(Sender: TObject);
var
F: TStringList;
begin
SaveDialog1.Filter := 'GPP files (*.GPP)|*.GPP';
if SaveDialog1.Execute then
begin
F := TStringList.Create;
with F do
begin
Add(label7.Caption);
Add(label21.Caption);
SaveToFile(Savedialog1.Filename);
Free;
end;
end;
end;
我想在这个Tstringlist中保存Tradiobutton状态。 你能帮助我吗? 此致
答案 0 :(得分:0)
回答只是为了以正确格式化的形式显示代码示例
阅读:
try/finally
pattern - http://docwiki.embarcadero.com/RADStudio/XE2/en/Writing_a_Finally_Block_(Delphi) TIniFile
课程和boolean
值 - http://docwiki.embarcadero.com/Libraries/XE2/en/System.IniFiles.TCustomIniFile.WriteBool - 虽然有点过时,功能有限但文字结构格式非常简单。所以你的代码会变成类似
的代码const ini_def_sect = 'Default Section';
procedure TForm1.Button3Click(Sender: TObject);
var
F: TCustomIniFile;
begin
SaveDialog1.Filter := 'GPP files (*.GPP)|*.GPP';
if SaveDialog1.Execute then
begin
F := TIniFile.Create(SaveDialog1.Filename);
try
F.WriteString(ini_def_sect, label7.Name, label7.Caption);
F.WriteString(ini_def_sect, label21.Name, label21.Caption);
F.WriteBool(ini_def_sect, radiobutton1.Name, radiobutton1.Checked);
F.UpdateFile;
finally
F.Destroy;
end;
end;
end;
或者以VCL为基础的风格(许多人不喜欢,因为他们不喜欢Pascal中的with
语句)
const ini_def_sect = 'Default Section';
procedure TForm1.Button3Click(Sender: TObject);
begin
SaveDialog1.Filter := 'GPP files (*.GPP)|*.GPP';
if SaveDialog1.Execute then
begin
with TIniFile.Create(Savedialog1.Filename) do
try
WriteString(ini_def_sect, label7.Name, label7.Caption);
WriteString(ini_def_sect, label21.Name, label21.Caption);
WriteBool(ini_def_sect, radiobutton1.Name, radiobutton1.Checked);
UpdateFile;
finally
Destroy;
end;
end;
end;
你真的应该给你的变量(包括标签,表格,单选按钮等)合理的名字,而你仍然可以记住每个变量的含义。相信我 - 一两个月,你会忘记。
PS:阅读结构化文件可能类似于
procedure TMainForm.btnOpenClick(Sender: TObject);
begin
OpenDialog1.Filter := 'GPP files (*.GPP)|*.GPP';
if OpenDialog1.Execute then
begin
with TIniFile.Create(OpenDialog1.Filename) do
try
label7.Caption := ReadString(ini_def_sect, label7.Name, '');
label21.Caption := ReadString(ini_def_sect, label21.Name, '');
radiobutton1.Checked := ReadBool(ini_def_sect, radiobutton1.Name, False);
finally
Destroy;
end;
end;
end;