2016-02-08 26 views
4

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

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。而且你不应该依赖被定义的工作目录。它可能是几乎任何东西。 –

+0

明白了。谢谢! – xrobatman

+0

“弃用api” - GetPrivateProfileStrings?此API使用了许多应用程序,包括Windows资源管理器。 –

回答

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; 
+0

这对你有用吗? –