Как подсчитать занимаемое директорией место
Источник: http://www.proext.com
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;
|
|