
VC++6.0のMFCで開発しています。
フォルダをどろっぷしてフォルダ内のファイルを取り出すという
プログラムです。
メインダイアログのクラス
for(int p=0;p<__argc-1;i++)
{
CFileFind find;
CString vv;
vv=__argv[p];
CString Newstr=vv+_T("\\*.*");
if(find.FindFile(Newstr)){
int i=1;
while(i){
if(__argv[p]==""){
return 0;
}
i=find.FindNextFile();
if(find.IsDots()){
continue;
}
if(find.IsDirectory()){
FolderDrop(find.GetFilePath());
}
CStringfilename=vv+"\\"+find.GetFileName();
CString kakucho=GetKaku(filename);
while((index3=m_listC.GetNextItem(index3,LVNI_ALL))!=-1){
indexstr=m_listC.GetItemText(index3,0);
if(kakucho==indexstr){
kdlg.m_DirectoryFileNameArray.Add(filename);
}
}
m_FilenameArray.Add(filename);
m_FolderFileNumber++;
}
find.Close();
}
}
void CDragDrop6Dlg::FolderDrop(CString str)
{
CString kakucho;
int i=m_listC.GetItemCount();
CString indexstr;
CString filename2;
CKakuninDlg kdlg;
int p;
int index3=-1;
for(p=0;p<=c;p++){//ドロップしたファイルがディレクトリの場合
CFileFind find;
CString Newstr=str+_T("\\*.*");
if(find.FindFile(Newstr)){
int i=1;
while(i){ i=find.FindNextFile();
if(find.IsDots()){
continue;
}
if(find.IsDirectory()){
FolderDrop(find.GetFilePath());}
filename2=str+"\\"+find.GetFileName();
kakucho=GetKaku(filename2)//ファイルの拡張子を取り出す
while((index3=m_listC.GetNextItem(index3,LVNI_ALL))!=-1){
indexstr=m_listC.GetItemText(index3,0);
if(kakucho==indexstr){
kdlg.m_DirectoryFileNameArray.Add(filename2);
}
}
m_FilenameArray.Add(filename2);
m_FolderFileNumber++;
}
find.Close();
}
}
としてフォルダAの中にフォルダBが入っていてその中に入っているファイルCを取り出したいのです。
このプログラムではドロップしたファイルが
一番目のプログラムでフォルダA内の中身がファイルならfilenameに
フォルダならBに潜り込む所まではいけました。
しかし実際に別ダイアログに取り出した全てのファイルの一覧を出すと
A内のプログラムしか表示されません。どこがいけないのでしょうか?
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
find.FindNextFile()で取得した名前がフォルダー(ディレクトリ)だった場合とファイルだった場合で動作がおかしくありませんか
if ( find.IsDirectory() ) {
FileDrop(find.GetFilePath());
}
filename2=str+"\\"+find.GetFileName();
kakucho=GetKaku(filename2)//ファイルの拡張子を取り出す
while((index3=m_listC.GetNextItem(index3,LVNI_ALL))!=-1){
といった記述だと フォルダーの場合FileDropが再帰で呼ばれますが
そこから帰った後 filename2 = ... の部分も実行してしまいますよ
if ( find.IsDirectory() ) {
// フォルダーなので再帰
FileDrop(find.GetFilePath());
} else {
// ファイル名なのでリストに登録
filename2=str+"\\"+find.GetFileName();
kakucho=GetKaku(filename2)//ファイルの拡張子を取り出す
while((index3=m_listC.GetNextItem(index3,LVNI_ALL))!=-1){
// 中略
}
}
といった具合にしたほうがいいでしょう
期待する動作と異なる動作をしていそうな部分に
ブレークポイントを設定してステップ実行するなどして見ましょう
> for(p=0;p<=c;p++){//ドロップしたファイルがディレクトリの場合
で cは定義されていないようですが forループの中に入ってきますか?
グローバル変数などで定義しているならDebug時には0xC0など特殊な初期化していませんの値になっています
Release時には 0になってしまっている場合があります
この回答への補足
試してませんでした。ブレークポイントに関しては
InitDialogがメインで行っているクラスですので
見れなかったきがします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
隠されたファイル
-
NetBTエラーとbrowserエラーが多発
-
Thunderbird 振り分けされなく...
-
Tera Termでのコマンド流し込み...
-
icaclsの読み方
-
分りません。
-
撮影後、SDカードに作成される...
-
コマンドプロンプトを非表示に...
-
JP1で月末以外で毎週月曜日のジ...
-
iTunes
-
VBSを作成
-
コマンドの戻り値が「130」
-
date /t > nulの意味を教えてく...
-
大文字はできるだけ使わない方...
-
スクリプトエラー表示
-
AccessVBAで特定の文字を含むフ...
-
pythonがわからない。
-
大量のフォルダへのハイパーリ...
-
ブラウザにIPアドレスを直打ち...
-
フォルダのサムネイル画像
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サブフォルダ内のファイルを全...
-
error RC2104について
-
C#でCSVファイルをリストビュー...
-
VBA Bookの表示、非表示
-
意味不明のアイコンとプログラ...
-
EXCELのSheetを自動更新できな...
-
vbからのファイル操作について
-
リストボックスに表示されたフ...
-
もっと理解を深めたい。
-
fgetsのfはどういう意味でしょ...
-
顧客から返ってきたExcel Sheet...
-
Think Free Online betaでの機...
-
Visual C++ 2005 Express Editi...
-
ExcelからAccessのマクロを呼び...
-
VBA ファイルチェックについて
-
hsp
-
隠されたファイル
-
拡張子のアイコンを取得
-
vbaでDLL参照しているエクセル...
-
たくさんのフォルダーの中から...
おすすめ情報