ファイルがロックされているか調べるには?


めぐ  2002-09-19 23:06:22  No: 1531

他のアプリケーションによってロックされているか調べる
にはどうしたらいいのですか?

例えば、他のアプリによって開かれていた場合に、
StringList1.LoadFromFile(...)と実行すると、
ファイルが開けません、となります。

これを防ぐためにはどうしたらいいのですか?

よろしくお願いします。


にしの  2002-09-19 23:50:35  No: 1532

開けない場合は、どうやっても開けません。
そうでないと、操作されないようにロックする意味がありませんから。
防ぐのであれば、ロックされる前に自アプリでロックするしかありません。

単純にエラーを回避したいのであれば、try...except...end;で、例外をキャッチしてやればよいです。
オプションを変更しないと、IDEでの実行時には例外発生とともに一時停止します。
もちろん、エラーを回避してもファイルは開けません。


めぐ  2002-09-20 00:55:17  No: 1533

にしのさん、レスありがとうございます。

try...exceptを使えばよかったんですね。

> 防ぐのであれば、ロックされる前に自アプリでロックするしかありません。

LoadFromFileで開いてもロックされませんよね?
ロックする場合には、どうすればいいのですか?

よろしくお願いします。


にしの  2002-09-20 01:23:42  No: 1534

TFileStream.Createのヘルプを参照してください。
第2引数に、fmShareExclusive  があればロックされます。


めぐ  2002-09-20 03:40:44  No: 1535

にしのさん、ありがとうございます。

TFileStreamというのを使ったことがないのですが、
TStringListと何が違うか教えていただきたいのですが。

現在やっていることは、与えられた文字列を追加して
保存するということを繰り返します。

この場合、どちらを使った方が効率がいい
(パフォーマンスを含めて)のでしょうか?


にしの  2002-09-20 05:25:25  No: 1536

TFileStreamは、ファイルからデータを読み取るのに使います。テキストデータだけでなく、バイナリデータでもOKです。
TStringList.LoadFromFileの代わりに、TStringList.LoadFromStreamを使用すれば、ほぼ同じことができます。


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








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