uses FileCtrl;
function DirSize(Dir: string): integer;
var
SearchRec: TSearchRec;
Separator: string;
DirBytes: integer;
begin
Result:=-1;
if Copy(Dir,Length(Dir),1)='\' then
Separator := ''
else
Separator := '\';
if FindFirst(Dir+Separator+'*.*',faAnyFile,SearchRec) = 0 thenbeginif FileExists(Dir+Separator+SearchRec.name) then
DirBytes := DirBytes + SearchRec.Size
elseif DirectoryExists(Dir+Separator+SearchRec.name) thenbeginif (SearchRec.name<>'.') and (SearchRec.name<>'..') then
DirSize(Dir+Separator+SearchRec.name);
end;
while FindNext(SearchRec) = 0 dobeginif FileExists(Dir+Separator+SearchRec.name) then
DirBytes := DirBytes + SearchRec.Size
elseif DirectoryExists(Dir+Separator+SearchRec.name) thenbeginif (SearchRec.name<>'.') and (SearchRec.name<>'..') then
DirSize(Dir+Separator+SearchRec.name);
end;
end;
end;
FindClose(SearchRec);
Result:=DirBytes;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
DirBytes: integer;
begin
DirBytes := DirSize('c:\windows');
Form1.Label1.Caption := IntToStr(DirBytes);
end;
Статья Вычисление размера каталога раздела Файловая система Директории может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.