Delphiでは、Basicのようにfor-nextループで時間稼ぎができず、
他のプロセスとシェアをしてしまう。それを解決する関数。
var
fWaitBreak : boolean = False; // 強制終了用フラグ
// 待ち関数 指定カウントが経過すれば True, 中断されたならば False
function WaitTime(const t: integer): Boolean;
var
Timeout: TDateTime;
begin
fWaitBreak := False; // フラグの初期化
Timeout := Now + t/24/3600/1000; // 終了時刻
while (Now < Timeout)and not fWaitBreak do begin
Application.ProcessMessages;
Sleep(10); //精度が 10ms 以下で良い場合
end;
Result := not fWaitBreak;
end;
|