我得到这个代码而回。我终于可以测试它(含部分变更以将文件放在不同的地方)......

void AddFiles(AnsiString path/*, TDataSet *DataSet*/)
{
TSearchRec sr;
int f;
    f = FindFirst(path+"\\*.*", faAnyFile, sr);
    while( !f )
    {
        if(sr.Attr & faDirectory)
        {
                if(sr.Name != "."   &&   sr.Name != "..")
                {
                        path.sprintf("%s%s%s", path, "\\", sr.Name);
                        AddFiles(path/*, DataSet*/);
                }
        }
        else
        {
                Form1->ListBox1->Items->Add(path+ "\\"+ sr.Name);
                //DataSet->Append();
                //DataSet->FieldByName("Name")->Value = sr.Name;
                /* other fields ... */
                //DataSet->Post();
        }
        f = FindNext(sr);
    }
    FindClose(sr);
}

它不能正常工作。在开始的时候被混合起来..

的...真实结构

根 根\ subdir1 根\ subdir2 根\ subdir3

得到弄糟这样...

根 根\ subdir1 根\ subdir1 \ subdir2 根\ subdir1 \ subdir2 \ subdir3

和最终停止包括根或子\子文件夹和“路径”只包含一个子文件夹(无它的根文件夹)

这是用于aquring可用全路径的文件名完全没用。

这样的或者您能告诉我的代码是怎么了...... 给我如何获得完整的路径文件名在DIR一些建议和所有其子目录。

我希望它是尽可能碱性。即,没有罕见高级C ++特性。东西,助洗剂小白很可能是能够进行调试。

有帮助吗?

解决方案

下面您附加每个子路径与当前路径:

path.sprintf("%s%s%s", path, "\\", sr.Name);
AddFiles(path/*, DataSet*/);

使用新的变量组合的路径,这样你就不会弄乱你还需要为这些文件的其余path变量/目录显示目录:

AnsiString subpath;
subpath.sprintf("%s%s%s", path, "\\", sr.Name);
AddFiles(subpath/*, DataSet*/);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top