2013-08-30 88 views
1

那麼,我正在Delphi中製作一個程序,它使用TValueListEditor對象來存儲Keys和Values並將它們保存到.txt文件中。我用這個功能,可以這樣做:在Delphi中保存保存位置的記錄

procedure TfrmInserir.FormClose(Sender: TObject; var Action: TCloseAction); 
    begin 
     vlePalavras.Strings.SaveToFile('C:\Users\Felipe Knop\Desktop\Felipe\Algoritmos\Delphi\Projetos\Palavras Japonês\Lista.txt'); 
    end; 

procedure TfrmInserir.FormCreate(Sender: TObject); 
    begin 
     vlePalavras.Strings.LoadFromFile('C:\Users\Felipe Knop\Desktop\Felipe\Algoritmos\Delphi\Projetos\Palavras Japonês\Lista.txt'); 
    end; 

在我的電腦能正常工作,因爲保存路徑是在代碼中,但我想與大家分享我的朋友的計劃,並希望他們能夠選擇的路徑。想到使用TSaveDialog,但因爲我從來沒有用過,所以我不知道它是否會按照我的意願去做。我需要一種方法讓用戶只需選擇一次路徑,每次關閉表單時文件都會保存在那裏。有任何想法嗎?

編輯:謝謝你傑森和肖恩爲你解答。他們都幫了我很大的忙,我想出了一種讓節目更具互動性的方法,並讓我的朋友們可以分享他們的名單。可能聽起來很愚蠢,但這是我的第一個程序,我非常感謝你。

+0

使用TSaveDialog,並將最後保存的文件名保存在您喜歡的小數據持久性模式中,例如:Ini文件,註冊表,xml文件等。 –

+1

聲音就像您在註冊表中尋找HKCU –

回答

2

首先,我會建議不要使用FormCreate從文件加載東西。如果因爲任何原因除了或者失敗,你的表單將無法加載。創建一個名爲「FormInit」的方法,在創建表單後調用它,然後顯示它。允許更好地處理FormInit問題。與關閉表單相同,有一個FormDeInit並在「CloseQuery」中調用它。

對你的問題。我使用「ForceDirectories」來確保選擇的路徑存在。如果目錄無法創建,這將返回false,在其他情況下爲true。當你無法創建文件夾時,你也可以很好地處理錯誤。

保存對話框可以說明文件的存儲位置,但是當您再次運行時,您怎麼知道他們最後一次設置的位置?回答你沒有,你需要在某個地方存儲。因此,這裏的答案是將您的初始配置存儲在已知的地方,或詢問它們在哪裏。我更喜歡將基本配置存儲在已知位置,並將其他配置的位置存儲在那裏。爲了簡單起見,我們留在一個層面。

如果你需要有一個已知的位置,然後用下面的調用

ExtractFileDir(Application.ExeName); 

這會給你在應用程序可執行文件運行的目錄。從這裏你可以附加你認爲合適的目錄結構。

如果您選擇使用保存對話框來獲取目錄或應用程序路徑,請確保仍使用forceDirectory調用來確保路徑存在。

+0

感謝您的回答。我現在就試一試。同時,有沒有辦法在不使用任何其他文件的情況下保存密鑰和值?也許我的問題聽起來很愚蠢,但只是檢查= P – FelipeKnop

+0

看看TIniFile存儲到磁盤的名稱,值對。而在內存中,我會建議使用名稱,值的Generics.Collections.TDictionary或一個很好的舊字符串列表。 I.E. myStringList.Add( 「名稱=值」); string myValue = myStringList.Value [「name」]; – Jason

+0

關於TIniFile,我來看看。關於StringList,這正是TValueListEditor的功能,除了管理更好的獨特密鑰和其他東西。自從我不久前開始傾向德爾福,並且還不知道多少,請告訴我,如果我說錯了什麼。 剛試過ExtractFileDir,它的工作原理非常好,謝謝你的提示。 – FelipeKnop