![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Процедура вычисления размера каталогаDelphi , Файловая система , Директории
Автор: Panov { **** UBPFD *********** by delphibase.endimus.com **** >> Вычисляет размер файлов в каталоге и подкаталогах, использую функции FindFirst/FindNext/FindClose Зависимости: Masks; Автор: panov, panov@hotbox.ru Copyright: Нет Дата: 30 марта 2004 г. ***************************************************** } procedure GetDirSize(const aPath: string; var SizeDir: Int64); var SR: TSearchRec; tPath: string; begin tPath := IncludeTrailingBackSlash(aPath); if FindFirst(tPath + '*.*', faAnyFile, SR) = 0 then begin try repeat if (SR.Name = '.') or (SR.Name = '..') then Continue; if (SR.Attr and faDirectory) <> 0 then begin GetDirSize(tPath + SR.Name, SizeDir); Continue; end; SizeDir := SizeDir + (SR.FindData.nFileSizeHigh shl 32) + SR.FindData.nFileSizeLow; until FindNext(SR) <> 0; finally Sysutils.FindClose(SR); end; end; end; Пример использования: procedure TForm1.Button1Click(Sender: TObject); var SizeDir: Int64; begin SizeDir := 0; GetDirSize('c:\winnt', SizeDir); ShowMessage('Размер каталога ' + IntToStr(SizeDir)); end; Вот перевод текста на русский язык: Это процедура Delphi, называемая Вот разбивка кода:
Пример использования показывает, как вызывать эту процедуру из обработчика события нажатия кнопки на форме. Процедура Обратите внимание:
Альтернативное решение может быть использование класса
Код использует класс Обратите внимание, что это код предполагает, что директория существует и пользователь имеет разрешение на чтение ее содержимого. Он также не обрабатывает ошибки хорошо; если произойдет ошибка при обходе или расчете размера директории, она будет распространяться и завершать программу. Процедура вычисления размера каталога с помощью функций FindFirst, FindNext и FindClose позволяет узнать суммарный размер файлов в указанном каталоге и всех его подкаталогах. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Директории ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |