お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"RE^4:長いファイル名(フルパス)を取得"

この発言は
#00579 Fermion さんのRE^3:長いファイル名(フルパス)を取得
に対するコメントです

この発言に対し以下のコメントが寄せられています
#00582 Fermion さん RE^5:長いファイル名(フルパス)を取得

Fermion さん、こんにちは。Satobe です。 > バグじゃないのでは?(呼び出しても問題ないようですよ。。。^^;) バグだと思います。(^^; > SysUtils の中の、FindClose( var F: TSearchRec ) を見てみますと、 >F.FindHandle <> INVALID_HANDLE_VALUE のときに Windows.FindClose( ) >を呼ぶようになっていますよ。 ((^^;) FindFirstの方を調べてみて下さい。 Result := FindMatchingFile(F); if Result <> 0 then FindClose(F); ↑というコードがあり、ここで FindCloseが実行されてしまうことが あるんです。 しかし、FindCloseしても F.FindHandle = INVALID_HANDLE_VALUE に なるわけではありませんから、アプリ側で再び FindCloseを呼び出す と、すでにクローズされているハンドルを再びクローズしようとする ことになり、(確か WinNTの場合に)例外が発生するはずです。 Win95では、なぜか問題が起きないので気づきにくいんですけど... FindFirstが非ゼロを返した場合には、FindCloseを呼び出さないよう にした方がいいですよ。(^^; もともと Win32APIの仕様では、FindFirstFile APIに失敗したら、 FindClose APIは呼び出す必要ありません(ハンドルがないから 呼び出せない)ですしね。 98/06/21(日) 02:10 Satobe(JCG00336) Original document by Satobe 氏 ID:(JCG00336)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum