0

このループを中止する最も一般的な方法を考えるために、非常に長いデータベース テーブルを処理する必要があります。主なコードシーケンスは次のようになります

 procedure TForm.ProcessmyTable(Sender : TObject);
 begin
 ..... 

 myTable.first;

 repeat
  ReadSingleRecordfromTable ( MyTable, aRecord) ;
  ProcessMyRecord(aRecord) ;
  MyTable.next;
 until MYTable.EOF;

 end;


 unit ....   ;

 procedure  ProcessMyRecord(aRecord : TMyDataRecord) ;
 begin

     //   do not have user interface stuff here
     //   Application.Processmessages  will not work here  !!!


     ....  ( long running code sequence) 

 end;

タイマーを実行し、フラグ サポートとして var を使用してタイマーに基づいてループを中断することはできますが、これは本当にこの問題を解決する最も賢い方法ですか?

4

3 に答える 3

0

ユーザーがWindowsアプリで確実に中止したいほど長いプロセスである場合、GUIとの対話、完了したレコードの数、または進行状況バー(すべてのレコードではない場合は定期的に)との対話が必要です。ラベルまたはプログレスバーを更新すると、中止フラグを設定する機会が提供されます (したがって、プロセスメッセージは必要ありません)。さらに、ユーザーがある程度の進行状況を確認できれば、退屈しても 95% 完了したときに中断する可能性は低くなります。

私見では :)

于 2013-04-25T13:09:45.500 に答える