1

好吧,我在 Delphi 中制作了一个程序,它使用 TValueListEditor 对象来存储键和值并将它们保存到 .txt 文件中。我用这个函数来做到这一点:

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,但由于我从未使用过,我不知道它是否会做我想要的。我需要一种方法让用户能够只选择一次路径,并且每次关闭表单时文件都会保存在那里。有任何想法吗?

编辑:感谢 Jason 和 Sean 的回答。两者都对我有很大帮助,我想出了一种方法来使程序更具交互性,并让我的朋友甚至可以分享他们的列表。可能听起来很愚蠢,但这是我的第一个程序之一,我真的非常感谢你。

4

1 回答 1

2

首先,我建议不要使用 FormCreate 从文件中加载内容。如果它因任何原因出现异常或失败,您的表单将不会加载。创建一个名为“FormInit”之类的方法,并在创建表单后调用它,然后显示它。允许更好地处理 FormInit 问题。关闭表单也是如此,有一个 FormDeInit 并在“CloseQuery”中调用它。

关于你的问题。我使用“ForceDirectories”来确保选择的路径存在以进行保存。如果无法创建目录,这将返回 false,在所有其他情况下返回 true。同样,当您无法创建文件夹时,您可以很好地处理错误。

保存对话框可以很好地说明文件的存储位置,但是当您再次运行时,您如何知道他们上次设置的位置?回答你没有,你需要把它存储在某个地方。所以这里的答案是简单地将您的初始配置存储在一个已知的地方或询问他们它在哪里。我更喜欢将基本配置存储在已知位置,并将其他配置的位置存储在那里。为简单起见,让我们停留在一个级别。

如果您需要知道位置,请使用以下调用

 ExtractFileDir(Application.ExeName);

这将为您提供运行应用程序可执行文件的目录。从这里您可以附加您认为合适的任何目录结构。

如果您选择使用保存对话框来获取目录或应用程序路径,请确保仍然使用 forceDirectory 调用来确保路径存在。

于 2013-08-30T03:24:07.183 回答