ファイルが作成されるまで待つ方法

解決


やまちび  2009-07-22 01:25:40  No: 35200  IP: 192.*.*.*

IEDownloadコンポーネントのIEDownload.GoやURLDownloadToFileでソースをダウンロードしてTEMPファイルを作成し、直後にそのTEMPファイルを解析する処理を作成したのですがファイルが作成される前に解析処理が始まってしまいNOT FOUNDのエラーが発生してしまいます。

そこでTEMPファイルが作成されるまで待機するように
while not FileExists(ChangeFileExt(ParamStr(0), '.tmp')) do Application.ProcessMessages;
としたのですが今度は解析の処理が開始されません。
そこでTEMPファイルが作成されるカレントディレクトリを確認したらTEMPファイル自体が作成されてませんでした。

そこでこのような場合はどのようにしてTEMPファイルが作成されるまで待てばよいのでしょうか?

よろしくお願いします。

編集 削除
国木田  2009-07-22 07:01:54  No: 35201  IP: 192.*.*.*

ファイルチェックをして、ループしてみては?

while not ファイルチェック  do
 if ファイルがあったら then break;

って感じで。

単にsleepでもいいけど。

編集 削除
やまちび  2009-07-22 07:02:37  No: 35202  IP: 192.*.*.*

試行錯誤していたら解決しました。
くだらないスレを立てて申し訳ありませんでした。

編集 削除
やまちび  2009-07-22 07:05:48  No: 35203  IP: 192.*.*.*

国木田  さん

ご返答ありがとうございます。
すれ違いになってしまったようですね。

while not FileExists(ChangeFileExt(ParamStr(0), '.tmp')) do Application.ProcessMessages;
は正常に動作していました。

しかし肝心のTEMPファイル作成に問題がありました。
そこを修正したら無事動作致しました。

編集 削除
Manbon  2009-07-23 16:59:04  No: 35204  IP: 192.*.*.*

ファイルがオープンされっぱなし
(=まだファイルが完全に作成されていない)
のときでも、FileExists は成功する場合が
あるようですので、注意が必要ですよ。

編集 削除