ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4552
このスレッドを参考に以下の関数を作ってみました
mojis ファイルズ;// mojis は自作の文字列クラス、複数の文字列を扱う
int リストアップ(){
FILEINFO FileInfo ;
DWORD_PTR FindHandle ;
int 総数 = 0;
// 検索開始、最初のファイルの情報を取得
FindHandle = FileRead_findFirst( "DATA\\*", &FileInfo ) ;
// ファイルが見つかった場合のみ分岐の中を実行
if( FindHandle != ( DWORD_PTR )-1 )
{
do
{
// 見つかったファイル名をコピー
ファイルズ[総数] = FileInfo.Name ;
総数++;
ファイルズ.+( 1 );//文字列の枠数を増やす
// 次のファイルを検索、無かったらループを抜ける
}while( FileRead_findNext( FindHandle, &FileInfo ) >= 0 ) ;
}
// 検索ハンドルの後始末
FileRead_findClose( FindHandle ) ;
return 総数;
}
自作の文字列クラスに順にファイルの名前を格納し
DATAフォルダの中にあるファイルとフォルダの総数を返す処理です
試してみたらなぜかファイル、フォルダの数が実際よりも2多くカウントされ
mojis[0]とmojis[1]に"・"と"・・"という謎のフォルダ名が入っています
DirFlagを調べたところこの二つにはTRUEが入っていてフォルダ扱いのようでした
FindHandle = FileRead_findFirst( "DATA\\画像\\*", &FileInfo ) ;のように
サブフォルダで試してみても最初の2つが"・"と"・・"でした
ファイルズ[2]以降はちゃんとした文字列が入っていますし、
返却される戻り値(int 総数)がどのフォルダで試しても実際より2大きい値で返ってきますので
自作文字列クラスの問題ではないと思います
原因が自分ではわからず質問させていただきました