■ LoadFromFileのエラー
sato
2009/02/24(火) 14:27:47 <初心者> 
ネットワーク上のファイルから、
Memo1.Lines.LoadFromFile('ABC.csv')
で読み込もうとすると、ごくまれに、
「ファイル"ABC.csv".プロセスはファイルにアクセスできません。
別のプロセスが使用中です。は開けません。」
とエラーになります。複数がアクセスするので、他が使用中かどうか
判断したいのですが、方法が分かりません。
よろしく、お願いします。
Win-XP、Delphi7です。
Manbon
2009/02/24(火) 15:12:30 <初心者> 
try文で何とかなるかと思います。
exceptの中に来たら使用中かな?
まこと
2009/02/24(火) 20:39:11
したのリンクが参考になるのでは?
http://delfusa.main.jp/delfusafloor/technic/technic/003_FileInUse.html
ここのサイトはいろいろ載ってるので、見てみるといいと思います。
トップページはこちらです。
たまに管理者の方がこの掲示板にもおいでになるようですね。
http://delfusa.main.jp/delfusafloor/index.shtml
sato
2009/02/25(水) 10:46:09 <初心者> 
Manbonさん まことさん ありがとうございます。
if *** then ...(1)
LoadFronFile ...(2)
(1)の***の部分を、FileInUse がFalse か
hFile:=FileOpen(filename,fmOpenRead)にして、ハンドルが取得できても
わずかのタイムラグのため、(2)に移った時に状態が、変わる事があるようで
エラーになる時があります。
結局、
try
LoadFronFile
except
on EErr: Exception do begin
//少しウェイトをかけて、
//再度、LoadFronFile
end;
end;
と、こんな感じでいいのでしょうか。
よろしく、お願いいたします。
Manbon
2009/02/25(水) 11:56:58 <初心者> 
except内に上記のような処理するのはまずいんじゃないかと・・・
例えば、以下のようにすれば安全かと思いますが。
成功したフラグ↑
for i := 1 to 10 do begin //10は適当
try
LoadFromFile;
except
成功したフラグ↓
end;
if 成功したフラグ↑ then Break;
Application.Processmessages;
sleep(100); //適当
end;
if 成功したフラグ↓ then ShowMessage('今はダメです');
sato
2009/02/25(水) 13:31:15 <初心者> 
[[解決]]
Manbonさん
ありがとうございました。
except end;の間で、ループかなと思っていましたが、
確かに、ゴチャゴチャになりそうですね。
ご丁寧に、ソースまで書いていただき助かりました。
毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!
