** 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
|
огромное спасибо |
|
|