1

テキスト/画像/データファイルの保存されていない変更を検出するための3つの方法は、次のように思われます。

  1. ユーザーが変更または保存するたびにブールフラグを更新します。これにより、多くの不要な更新が発生します。

  2. 元のファイルのキャッシュされたコピーを保持し、保存操作をチェックする必要があるたびに2つを比較します。

  3. 過去のすべての操作と必要に応じてプッシュ/ポップ操作のスタックを保持すると、多くの余分なメモリ使用量が発生します。

一般に、商用アプリケーションは、保存されていない変更が存在するかどうかをどのように検出し、各アプローチの長所/短所は何ですか?特別な保存動作を持つカスタムアプリケーションを作成しているときにこの問題が発生し、既知のベストプラクティスがあるかどうかを知りたいと思います。

4

2 に答える 2

2

元に戻る/やり直しシステムが必要な限り、過去の操作のスタックが必要です。ドキュメントがどの状態にあるかを検出するために、スタックのアイテムは「保存された状態」に設定されます。現在のスタックノードはそのアイテムではなく、ドキュメントが変更されています。

この例は、Qt QUndoStack(http://doc.qt.nokia.com/stable/qundostack.html)とisClean()そのsetClean()

命題1の場合、ブール値の更新は問題ではなく、時間もかかりません。

于 2011-10-06T06:25:50.850 に答える
0

これは、必要な機能とファイルのサイズ/形式によって異なります。

最初のオプションは最も単純で、最小限のオーバーヘッドで必要なものを提供します。

2番目のオプションには、変更が手動で元に戻されたことを検出できるという利点があります。そのため、結局のところ実際の変更はありません(ただし、それほど頻繁には発生しない可能性があります)。一方、何かが変更されたかどうかを確認するためだけに差分を作成する方がはるかにコストがかかります。ユーザーがキーを押すたびにそれを実行したくない場合があります。

3番目のオプションは、取り消し履歴を提供する機能を提供します。連続して(カーソルを移動せずに)行われた変更をグループ化するなどして、その履歴内のアイテムの数を制限できます。

于 2011-10-06T06:25:33.950 に答える