R@kot |
Отправлено: 27.01.2005, 01:13 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 32
|
Народ, если кто знает, подскажите, как получить список названий всех папок, существующих в каком-либо каталоге? А как получить список всех файлов? Кому не лень, ответьте
|
|
olegenty |
Отправлено: 27.01.2005, 08:40 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
FindFirstFile/FindNextFile (WIN API)
только рекомендую использовать "W" версию, чтобы не заморачиваться относительно имён файлом, длиннее 255 символов.
|
|
Konstantine |
Отправлено: 27.01.2005, 10:27 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
а чтоб только директории выводило — то в параметрах поиска нада поставить атрибут директории (faDirectory)
|
|
Doga |
Отправлено: 27.01.2005, 10:59 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
Ну тады и я чо нить скажу
CODE |
//Возвращает список подкаталогов (TStringList) в каталоге RootDir,
//или NULL если RootDir некоректный
//---------------------------------------------------------------------------
TStringList * __fastcall GetSubDirs(AnsiString RootDir)
{
TStringList *Result = NULL;
if (DirectoryExists(RootDir))
{
TSeachRec sr;
AnsiString MaskNameString;
Result = new TStringList();
Result->Clear();
Result->Append(RootDir);
for (i = 0; i < Result->Count; i++)
{
//Корректировка пути(дабавлямс '\')
Result->Strings[i] = NormalDir(Result->Strings[i]);
//MaskNameString — енто будет строка с маской имени файла(вааще-то каталога)
MaskNameString = Result->Strings[i] + "*.*";
//Поиск всех подкаталогов в указанном каталоге
for (int j = 0;;j++)
{
if (!j)
{
if (FindFirst(MaskNameString, faAnyFile, sr))
{
FindClose(sr);
break;
}
}
else
{
if (FindNext(sr))
{
FindClose(sr);
break;
}
}
//Добавлямс новый путь к списку (ежели енто каталог)
if(sr.Attr&faDirectory)
{
if((sr.Name != ".") && (sr.Name != ".."))
{
Result->Append(Result->Strings[i] + sr.Name);
}
}
}
}
//Удаляем корневой каталог из списка подкаталогов
Result->Delete(0);
}
return Result;
}
//---------------------------------------------------------------------------
|
|
|
R@kot |
Отправлено: 29.01.2005, 01:57 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 32
|
Спасибо большое всем, кто не поленился ответить !!!
|
|