Получает размер папки со всем содержимым.
1 2 3 4 5 6 7 8 9 10 11 12 |
var path: string; incSubDirs: boolean; size: int64; begin path:= 'C:\Program Files'; incSubDirs:= true; size:= 0; getDirSize(path, incSubDirs, size); ShowMessage(IntToStr(size)); end; |
Параметры
path - путь к папке (можно как со слешем на конце, так и без)
incSubDirs - включать или нет в подсчет подкаталоги
size - переменная для вывода результата процедуры
Результат
Размер папки в байтах.
Если путь не существует, состояние переменной size останется 0.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
procedure getDirSize(dir: string; incSubDirs: Boolean; var Result: Int64); var SearchRec: TSearchRec; FindResult: int64; begin Dir := IncludeTrailingBackslash(Dir); FindResult := FindFirst(Dir + '*.*', faAnyFile, SearchRec); try while FindResult = 0 do with SearchRec do begin if (Attr and faDirectory) <> 0 then begin if IncSubDirs and (Name <> '.') and (Name <> '..') then getDirSize(Dir + Name, IncSubDirs, Result); end else begin Result := Result + (Size); end; FindResult := FindNext(SearchRec); end; finally FindClose(SearchRec); end; end; |