2016-02-08 186 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

這對你有用嗎? –