将单选按钮的状态保存到字符串列表

时间:2013-12-23 09:34:01

标签: delphi lazarus

在我的应用程序中,我将一些编辑值保存在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状态。 你能帮助我吗? 此致

1 个答案:

答案 0 :(得分:0)

回答只是为了以正确格式化的形式显示代码示例

阅读:

所以你的代码会变成类似

的代码
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;