IEDownloadコンポーネントのIEDownload.GoやURLDownloadToFileでソースをダウンロードしてTEMPファイルを作成し、直後にそのTEMPファイルを解析する処理を作成したのですがファイルが作成される前に解析処理が始まってしまいNOT FOUNDのエラーが発生してしまいます。
そこでTEMPファイルが作成されるまで待機するように
while not FileExists(ChangeFileExt(ParamStr(0), '.tmp')) do Application.ProcessMessages;
としたのですが今度は解析の処理が開始されません。
そこでTEMPファイルが作成されるカレントディレクトリを確認したらTEMPファイル自体が作成されてませんでした。
そこでこのような場合はどのようにしてTEMPファイルが作成されるまで待てばよいのでしょうか?
よろしくお願いします。
ファイルチェックをして、ループしてみては?
while not ファイルチェック do
if ファイルがあったら then break;
って感じで。
単にsleepでもいいけど。
試行錯誤していたら解決しました。
くだらないスレを立てて申し訳ありませんでした。
国木田 さん
ご返答ありがとうございます。
すれ違いになってしまったようですね。
while not FileExists(ChangeFileExt(ParamStr(0), '.tmp')) do Application.ProcessMessages;
は正常に動作していました。
しかし肝心のTEMPファイル作成に問題がありました。
そこを修正したら無事動作致しました。
ファイルがオープンされっぱなし
(=まだファイルが完全に作成されていない)
のときでも、FileExists は成功する場合が
あるようですので、注意が必要ですよ。
ツイート | ![]() |