Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать размер папки [D7, WinXP]


Jupiter ©   (2005-07-26 11:30:00) 

Помогите пожалуйста узнать размер папки(Пуста она или нет).
Заранее благодарен.


kblc   (2005-07-26 14:02:00) [1]

Кароче... запарили... ;)) измени как надо ;) а мне ещё работать надо ;)


kblc   (2005-07-26 14:00:00) [2]

Специально для Fay:
procedure GetFolderInfo(const Folder: string; var FileSizes, FileCount: Integer);
var
 sr: TSearchRec;
begin
 if FindFirst(Folder+'*.*', faAnyFile, sr) = 0 then
 repeat
   if sr.Attr=faDirectory then
   begin
     if (sr.Name<>'.') and (sr.Name<>'..') then
     GetFolderInfo(Folder+'\'+sr.Name+'\', FileSizes, FileCount);
   end else
   begin
     inc(FileSizes,sr.Size);
     inc(FileCount);
   end;
 until FindNext(sr) <> 0;
 FindClose(sr);
end;


А потом вызываешь:
var
 nSize, nCount: Integer;
...
 nSize:=0;
 nCount:=0;
 GetFolderInfo('C:\',nSize, nCount);

Теперь вроде точно всё ;)


Fay   (2005-07-26 13:54:00) [3]

2 begin...end ©   (26.07.05 13:49) [8]
Оно там флаговое? Тогда прикольно 8)


begin...end   (2005-07-26 13:49:00) [4]

> kblc ©   (26.07.05 13:07) [6]
> if sr.Attr=faDirectory then

Ну-ну.


Fay   (2005-07-26 13:20:00) [5]

2 kblc ©   (26.07.05 13:07) [6]
А папки '..' и '.' ? 8)


kblc   (2005-07-26 13:07:00) [6]

procedure GetFolderInfo(const Folder: string; var FileSizes, FileCount: Integer);
var
 sr: TSearchRec;
begin
 if FindFirst(Folder+'*.*', faAnyFile, sr) = 0 then
 repeat
   if sr.Attr=faDirectory then
      GetFolderInfo(Folder+'\'+sr.Name+'\', FileSizes, FileCount) else
   begin
     inc(FileSizes,sr.Size);
     inc(FileCount);
   end;
 until FindNext(sr) <> 0;
 FindClose(sr);
end;


А потом вызываешь GetFolderInfo('C:\',nSize, nCount);
Вроде всё


Ботвин Дмитрий   (2005-07-26 12:22:00) [7]

Вот так наверно узнаешь и размер и колво-во файлов в паке.

var sr: TSearchRec;
   Razmer, KolBoFailov: integer;

begin
 KolBoFailov:=0;
 Razmer:=0;
 if FindFirst(<Каталог>+'\*.*', faAnyFile, sr) = 0 then
   repeat
     Razmer:=Razmer+sr.Size;
     inc(KolBoFailov);
   until FindNext(sr) <> 0;
 FindClose(sr);
end;  

Если внутри папки есть вложенные папки, рекурсию, я думаю сам сделаешь.


Fay   (2005-07-26 12:15:00) [8]

2 Jupiter ©   (26.07.05 11:30)
Нужно узнать, сколько она занимает на диске?
Или сумму размеров файлов внутри?


Jupiter   (2005-07-26 12:07:00) [9]

Нужно узнать размер
Но если знаешь как узнать пуста она или нет поделись пожалуйста


kblc   (2005-07-26 11:48:00) [10]

Что значит пуста? ты же знаешь что файлы могут быть и нулевым размером!
 Уточни.


kblc   (2005-07-26 11:44:00) [11]

Пуста она или нет? или её размер?


Наверх

Титульная страница Поиск, карта сайта Написать письмо