15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как подсчитать занимаемое директорией место

var
   DirBytes : integer;

function TFileBrowser.DirSize(Dir:string):integer;
var
   SearchRec : TSearchRec;
   Separator : string;
begin
   if Copy(Dir,Length(Dir),1)='\' then Separator := ''
   else Separator := '\';
   if FindFirst(Dir+Separator+'*.*',faAnyFile,SearchRec) = 0 then begin
   if FileExists(Dir+Separator+SearchRec.Name) then begin
      DirBytes := DirBytes + SearchRec.Size;
      {Memo1.Lines.Add(Dir+Separator+SearchRec.Name);}
   end
   else
      if DirectoryExists(Dir+Separator+SearchRec.Name) then begin
         if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
            DirSize(Dir+Separator+SearchRec.Name);
      end;
   while FindNext(SearchRec) = 0 do begin
      if FileExists(Dir+Separator+SearchRec.Name) then begin
         DirBytes := DirBytes + SearchRec.Size;
         {Memo1.Lines.Add(Dir+Separator+SearchRec.Name);}
      end
      else
         if DirectoryExists(Dir+Separator+SearchRec.Name) then begin
            if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then begin
               DirSize(Dir+Separator+SearchRec.Name);
            end;
         end;
      end;
   end;
   FindClose(SearchRec);
end;

 

Источник: www.proext.com