プロが教えるわが家の防犯対策術!

WindowsXPでVC++.NETを使ってプログラミングをしています。

拡張子なしファイル検索について質問があります。

現在、下記のようなソースを記述してます。

CString testPath = "D:\\*.";
BOOL Working = finder.FindFile(testPath,0);

if(Working)
{
AfxMessageBox("見つかりました",MB_OK,0);
}
else
{
AfxMessageBox("見つかりません",MB_OK,0);
}

で、ファイルがないのに、見つかりましたのメッセージボックスがでてきてしまいます。

すみませんが、ヒントか回答をいただけたら幸いです。

宜しくお願い致します。

A 回答 (7件)

やはり6の方のいうとおり、Win32APIの使用ですかね。


ファイルの有無の判断はFindFirsFile()の戻りでわかるし。

.NET Frameworkクラスライブラリなら、
Directory.GetFiles()っていうのがあるんですけどね。
でも、呼ぶためにはC++マネージ拡張プログラミングが必要だから
面倒くさいですね。自分も呼び方わからないし。
    • good
    • 0

> それがいやなら MatchesMaskメソッドで検索条件を絞っておけばいい



ごめんなさい。これマチガイ。
検索条件をあらかじめ絞ることは出来ないようです。

Win32API:FindFirstFile/FindNextFile/FindCloseを使ったほうが楽にも思えます。
    • good
    • 0

だからイッパツで判定するのは無理ですって。

帰ってきた検索結果の中にファイルがひとつも含まれていなければ、という判定が必要です。

それがいやなら MatchesMaskメソッドで検索条件を絞っておけばいい
# マニュアルを読みましょう
    • good
    • 0

> 単にそのディレクトリにファイルがあるかどうかという判断はCFileFindでは出来ないのでしょうか?



ドキュメントを読んでください。検索の結果えられたものがファイルであるか否かを調べるメソッドがあります。

この回答への補足

ファイルであるか否かを調べるメソッドはわかったのですが(IsDots())、ファイルがあっても"."ディレクトリを意味するものが帰ってきてしまうのですが。。。

何かまだ、検索して、判定しなければならないのですか?

補足日時:2004/11/02 16:50
    • good
    • 0

ならばそれは正しい動作です。


"."はカレントディレクトリを表します。

検索対象となるファイルにはディレクトリも含まれます。

この回答への補足

すみませんが、

>検索対象となるファイルにはディレクトリも含まれます。

とはどういう事でしょう???

単にそのディレクトリにファイルがあるかどうかという判断はCFileFindでは出来ないのでしょうか?

補足日時:2004/11/02 15:47
    • good
    • 0

> ファイル名をGetFileName()でみましたが、空でした。



空? "." や ".." ではなくて?

この回答への補足

すみません。
"."でした。

補足日時:2004/11/02 15:17
    • good
    • 0

そのとき、見つかったファイル名はどんなものでしたか?

この回答への補足

ファイル名をGetFileName()でみましたが、空でした。

補足日時:2004/11/02 14:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!