CFileFindでファイル名を取得できない – プログラミング – Home

CFileFindでファイル名を取得で...
 
通知
すべてクリア

[解決済] CFileFindでファイル名を取得できない


倍満
 倍満
(@倍満)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

初めて利用させて頂きます。こちらの皆さんのお力におすがりしたく参りました。

つい先週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++ではこの方法は通じないのでしょ
うか。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

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);
}
}


返信引用
倍満
 倍満
(@倍満)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

見事解決いたしました!!
お教えいただいたコードで、見事に私のやりたかったことが実現いたしました!
誠にありがとうございます、またご縁がございましたらよろしくお願いいたします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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