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

解決


やまちび  2009-07-22 10:25:40  No: 35200

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 16:01:54  No: 35201

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

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

って感じで。

単にsleepでもいいけど。


やまちび  2009-07-22 16:02:37  No: 35202

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


やまちび  2009-07-22 16:05:48  No: 35203

国木田  さん

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

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

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


Manbon  2009-07-24 01:59:04  No: 35204

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加