1

さて、TValueListEditor オブジェクトを使用してキーと値を保存し、それらを .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 を使用することを考えましたが、使用したことがないため、希望どおりになるかどうかわかりません。ユーザーが一度だけパスを選択できるようにする方法が必要で、フォームを閉じるたびにファイルがそこに保存されます。何か案は?

編集:ジェイソンとショーンの両方に答えてくれてありがとう。どちらも私を大いに助け、プログラムをよりインタラクティブにし、友達がリストを共有する可能性を与える方法を見つけました. ばかげているように聞こえるかもしれませんが、これは私の最初のプログラムの 1 つであり、本当に感謝しています。

4

1 に答える 1

2

まず、ファイルからの読み込みに FormCreate を使用しないことをお勧めします。何らかの理由で例外または失敗した場合、フォームは読み込まれません。「FormInit」などと呼ばれるメソッドを作成し、フォームを作成した後にこれを呼び出して表示します。FormInit の問題をより適切に処理できます。フォームを閉じる場合も同じで、FormDeInit を用意して「CloseQuery」で呼び出します。

あなたの質問に。「ForceDirectories」を使用して、選択したパスが保存用に存在することを確認します。ディレクトリを作成できなかった場合は false を返し、それ以外の場合は true を返します。ここでも、フォルダーを作成できない場合にエラーを適切に処理できます。

保存ダイアログは、ファイルを保存する場所を示すのに問題ありませんが、もう一度起動したときに、最後に設定した場所をどのように知ることができますか? そうでないと答えてください。それをどこかに保存する必要があります。したがって、ここでの答えは、初期構成を既知の場所に保存するか、どこにあるかを尋ねることです。基本構成を既知の場所に保存し、他の構成の場所をそこに保存することを好みます。簡単にするために、1 つのレベルにとどまります。

既知の場所が必要な場合は、次の呼び出しを使用します

 ExtractFileDir(Application.ExeName);

これにより、アプリケーションの実行可能ファイルが実行されているディレクトリが得られます。ここから、適切と思われる任意のディレクトリ構造をアタッチできます。

保存ダイアログを使用してディレクトリまたはアプリケーション パスを取得することを選択した場合でも、必ず forceDirectory 呼び出しを使用してパスが存在することを確認してください。

于 2013-08-30T03:24:07.183 に答える