初めて利用させて頂きます。こちらの皆さんのお力におすがりしたく参りました。
つい先週VC++を学習しはじめたもので、まだVC++の使い方やルールには慣れておりませ
ん。ですが、VB6の経験とC++の経験があります。環境はXP、VisualStudio2008です。
CFileFindを用いて、あるフォルダの中のすべてのテキストファイル名をリストに追加す
るというプログラムを作りたく思っています。いろんなサイトを回ってサンプルプログラ
ムをいじってみたのですが、どうしてもビルドするとエラーが出ます。以下がその部分の
コードです。
CFileFind filefind;
bool tk;
if(filefind.FindFile())
{
do
{
tk=filefind.FindNextFile();
this->listBox1->Items->Add(CFileFind::GetFileName());
}while(tk);
filefind.Close();
}
ビルドすると11個のエラーが出ます。いくつかを以下に抜き出します。
error C2065: 'CFileFind' : 定義されていない識別子です。
error C2146: 構文エラー : ';' が、識別子 'filefind' の前に必要です。
error C2065: 'filefind' : 定義されていない識別子です。
error C2228: '.FindFile' の左側はクラス、構造体、共用体でなければなりません
MSDNで調べたりgoogleで検索しても具体的なこのエラーの回避方法が載っておりません。
初歩的な質問でまことに申し訳ないのですが、どなたか解決策を教えていただけますでし
ょうか。
また、VC++を利用する前は
struct _finddata_t fd;
string temp;
char StrBuf[50];
strcpy(StrBuf,FileName.c_str());
long handle;
handle=_findfirst(StrBuf,&fd);
do
{
puts(fd.name);
temp=fd.name;
temp=temp.substr(0,temp.rfind(.txt));
AddItem(temp);
}while(_findnext(handle,&fd)!=-1);
_findclose(handle);
こんな感じでファイル名を取得していたのですが、VC++ではこの方法は通じないのでしょ
うか。
C++/CLIでWindows Forms アプリを作ってますね。
ならば使用するライブラリは .Net Framework です。
対して CFileFind はMFCが提供するクラス。
両者を混在させているのが原因です。
// ボタンが押されたら drive-C のルートにあるファイルを列挙
System::Void button1_Click(Object^ sender, EventArgs^ e) {
for each ( String^ name in System::IO::Directory::GetFiles(Lc:\\) ) {
listBox1->Items->Add(name);
}
}
見事解決いたしました!!
お教えいただいたコードで、見事に私のやりたかったことが実現いたしました!
誠にありがとうございます、またご縁がございましたらよろしくお願いいたします。