CfileFindについて – プログラミング – Home

通知
すべてクリア

[解決済] CfileFindについて


ファイラー
 ファイラー
(@ファイラー)
ゲスト
結合: 22年前
投稿: 6
Topic starter  

<環境>
VC6++,MFC,ダイアログベース,Windows2000

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

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


引用未解決
トピックタグ
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 188
 

CFileFindの概要のところに例があったような気がするんだけど・・

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

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

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


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

ヘルプを読むと、

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

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


返信引用
ファイラー
 ファイラー
(@ファイラー)
ゲスト
結合: 22年前
投稿: 6
Topic starter  

なるほど!!わかりやすいご回答ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました