Мне дали этот код некоторое время назад. Наконец-то я приступил к его тестированию (с некоторыми изменениями, чтобы поместить файлы в другое место) ...
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
и в конечном итоге он перестает включать корневые или вложенные \ sub-папки, а 'path' просто содержит подпапку (без корневых папок)
это абсолютно бесполезно для получения пригодных имен файлов полного пути.
так что либо можете ли вы сказать мне, где код идет не так ... или дайте мне несколько советов о том, как получить полный путь к файлам в каталоге и всех его подкаталогах .
Я хочу, чтобы это было как можно более простым. то есть нет необычных расширенных возможностей C ++. вещи, которые noob-строитель, скорее всего, сможет отлаживать.