加载/保存 .ini 文件。

4

我编写了一段代码,可以让我将变量保存到具有自定义文件名的.ini文件中。文件名取决于EditBox1中的文本。这没有问题。我的问题是,如何通过从加载文件窗口(Windows资源管理器)选择文件来从该自定义文件名中加载那些变量。

DataIni:=TIniFile.Create(getcurrentdir+'\save folder\' + EditBox1.Text +'.ini');

示例保存变量

DataIni.WriteString('INFO','FirstName',EditFirstName.Text);
DataIni.WriteString('INFO','MiddleName',EditMiddleName.Text);
DataIni.WriteString('INFO','FamilyName',EditFamilyName.Text);

示例负载变量

EditFirstName.Text := DataIni.ReadString('INFO','FirstName',EditFirstName.Text);
EditMiddleName.Text := DataIni.ReadString('INFO','MiddleName',EditMiddleName.Text);
EditFamilyName.Text := DataIni.ReadString('INFO','FamilyName',EditFamilyName.Text);

例如,如果EditBox1.Text = 'MyFile1',那么我如何通过从其他文件列表中选择MyFile1.ini来加载保存在MyFile1.ini中的变量?


4
请使用TOpenDialog。此外,应该优先使用TMemIniFile而非TIniFile,因为后者使用已弃用的Windows API。你不应依赖于工作目录已定义,它可能是任何东西。 - David Heffernan
"已弃用的API" - GetPrivateProfileStrings?此API被许多应用程序使用,包括Windows资源管理器。 - The North Star
1个回答

0

您可以使用 TOpenDialog 来获取您想要的文件名,然后调用一个函数来加载您的值。

uses IniFiles;
...

点击按钮时,调用OpenDialog.Execute允许选择文件名。

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TOpenDialog.Create(Self) do
  try
    Filter := 'Ini Files (*.ini)|*.ini';
    if Execute then
      LoadMyVars(FileName);
  finally
    Free;
  end;
end;

这个函数将您的ini文件中的值加载到控件中。

procedure TForm1.LoadMyVars(const AFileName: string);
var
  DataIni : TIniFile;
begin
  DataIni := TIniFile.Create(AFileName);
  try
    EditFirstName.Text := DataIni.ReadString('INFO','FirstName', '');
    EditMiddleName.Text := DataIni.ReadString('INFO','MiddleName', '');
    EditFamilyName.Text := DataIni.ReadString('INFO','FamilyName', '');
  finally
    FreeAndNil(DataIni);
  end;
end;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接