CfileFindについて

[戻る]
ファイラー 2002/12/07(土) 13:41:13
<環境>
VC6++,MFC,ダイアログベース,Windows2000

ファイルを検索するプログラムを作成しています。
下記のように特定のディレクトリから*.txtのファイルを拾いたいのですが、
なぜか、必ず拾えるファイルが1つ少ないのです。
このような現象にあったことがある方がいましたら、ご教授願います。

<ソース>
if( filefind.FindFile(szFilePath) ) {
 do {
  if( FALSE == filefind.FindNextFile())
   break;
  ・・・ファイル処理
 } while(1);
 filefind.Close();
}

不良PG 2002/12/07(土) 13:48:50
CFileFindの概要のところに例があったような気がするんだけど・・

例の通り書いた方がわかりやすいかも・・


書き直すならこんな感じ・・・

if( filefind.FindFile(szFilePath) ) {
 do {
  BOOL bResult = filefind.FindNextFile();
  ・・・ファイル処理
  if( !bResult )
    {
       break;
    }
 } while(1);
 filefind.Close();
}

tib 2002/12/07(土) 13:49:17
ヘルプを読むと、

CFileFind::FindNextFile
まだ検索していないファイルが残っている場合は 0 以外を返します。最後のファイルま
で検索し、FindFile または FindNextFile の前回の呼び出しで 0 以外が返されている場
合は、0 を返します。

ということなので、FindNextFile()がFALSEを返してくるということは「もうこれ以上検
索するファイルはないよ」という意味ではなく、「これが検索できた最後のファイルだ
よ」という意味なのです。上記ソースでは、最後のファイルの処理を行う前にbreakして
しまってます。

ファイラー 2002/12/07(土) 14:18:33
[[解決]]
なるほど!!わかりやすいご回答ありがとうございました。

古いスレッドには追加発言できません。