<環境>
VC6++,MFC,ダイアログベース,Windows2000
ファイルを検索するプログラムを作成しています。
下記のように特定のディレクトリから*.txtのファイルを拾いたいのですが、
なぜか、必ず拾えるファイルが1つ少ないのです。
このような現象にあったことがある方がいましたら、ご教授願います。
<ソース>
if( filefind.FindFile(szFilePath) ) {
do {
if( FALSE == filefind.FindNextFile())
break;
・・・ファイル処理
} while(1);
filefind.Close();
}
CFileFindの概要のところに例があったような気がするんだけど・・
例の通り書いた方がわかりやすいかも・・
書き直すならこんな感じ・・・
if( filefind.FindFile(szFilePath) ) {
do {
BOOL bResult = filefind.FindNextFile();
・・・ファイル処理
if( !bResult )
{
break;
}
} while(1);
filefind.Close();
}
ヘルプを読むと、
CFileFind::FindNextFile
まだ検索していないファイルが残っている場合は 0 以外を返します。最後のファイルま
で検索し、FindFile または FindNextFile の前回の呼び出しで 0 以外が返されている場
合は、0 を返します。
ということなので、FindNextFile()がFALSEを返してくるということは「もうこれ以上検
索するファイルはないよ」という意味ではなく、「これが検索できた最後のファイルだ
よ」という意味なのです。上記ソースでは、最後のファイルの処理を行う前にbreakして
しまってます。
なるほど!!わかりやすいご回答ありがとうございました。