C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Список папок
** RedDevil
Отправлено: 29.01.2006, 21:32


Не зарегистрирован







Здравствуйте! Как получить список папок(подкаталогов) в какой -либо папке(каталоге)? Желательно показать на примере.
Halfdead
Отправлено: 30.01.2006, 04:18


Не зарегистрирован







Если бы воспользовался поиском, то нашел бы:Список всех подкаталогов в директории

И заодно:
CODE
Q: Как узнать общий размер папки, количество файлов и подпапок в ней?

A:    // Вот ф-ия, которая это делает для папки и всех её подпапок.
void FolderSize(AnsiString Folder,int &Size,int &fCount,int &folCount)
{
 // Size — размер папки в байтах (сюда будет записываться).
 //fCount — общее количество файлов в папке
 //folCount — общее количество подпапок в папке
 
 TSearchRec SR;
 
 //Проверка, заканчивается ли путь на \, если да, то удаляем его.
 if(Folder[Folder.Length()] == '\')
  Folder.SetLength(Folder.Length()-1);
 
 if(FindFirst(Folder+"\*.*",faAnyFile,SR) == 0)//Делаем первый поиск
  do
  {  //Если то что мы нашли не является обратными ссылками...
   if(SR.Name != "." &&  SR.Name != "..")
           {   // Если найденное является папкой, функция вызывает       // саму себя и увеличивает счетчик кол-ва подпапок.
    if((SR.Attr & faDirectory)!=0)
    {
              FolderSize(Folder+"\"+SR.Name,Size,fCount,folCount);
    folCount++;
    }
    else //Если это файл — наращиваем общий размер
    {
     Size = Size + SR.Size;
     fCount++;
    }
   }
  }
  while(FindNext(SR)==0);
  FindClose(SR);
}

// Пример вызова этой функции.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int a =0 , b = 0, c = 0; // Не забываем обнулить переменные.
 FolderSize("C:\CD",a,b,c);
 ShowMessage (a); // Размер папки в байтах.
 ShowMessage (b); // Общее количество файлов в папке.
 ShowMessage (c); // Общее количество подпапок.
}
RedDevil
Отправлено: 30.01.2006, 14:52


Ученик-кочегар

Группа: Участник
Сообщений: 4



огромное спасибо

Вернуться в Вопросы программирования в C++Builder