Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.09;
Скачать: CL | DM;

Вниз

Определение размера директории   Найти похожие ветки 

 
Kair ©   (2004-02-25 10:32) [0]

Так, сделал такое

function GetDirectorySize(Path: String; drSize: Integer): Integer;
var
sr: TSearchRec;
begin
Result := drSize;
if Path[Length(Path)] <> "\" then Path := Path + "\";
if FindFirst(Path + "*.*", faAnyFile, sr) = 0 then
repeat
if (sr.Name <> ".") and (sr.Name <> "..") then
if (sr.Attr and faDirectory) = faDirectory then
Result := GetDirectorySize(Path + sr.Name, Result) else
Result := Result + sr.Size;
until FindNext(sr) <> 0;
FindClose(sr);
end;

Пример:
Caption := IntToStr(GetDirectorySize("C:\", 0));

Кстати, поставив вместо sr.Size единицу, можно считать кол-во файлов.

Но вышла одна заковырка - если задать путь "C:\XXX", то все гуд, а если задать путь "C:\", то почему-то размер неправильно определяет, хотя кол-во файлов правильно выводит. В связи с этим было бы весьма интересно получить объяснение сего поведения
функции, теоретически мною не задуманного.


 
PVOzerski ©   (2004-02-25 11:28) [1]

А по сравнению с чем получается неправильно? И действительно ли неправильно (с учетом, например, возможного изменения размера swap-файла в ходе сканирования)?


 
Kair ©   (2004-02-26 12:04) [2]

По сравнению, чем Эксплорер показывает


 
Андрей Сенченко ©   (2004-02-26 12:07) [3]

Если размер посчитать и показать в байтах и килобайтах - цифры вполне могут отличаться в результате округлений например


 
Kair ©   (2004-02-27 08:38) [4]

А блин, понял!
На диске С: занятый размер больше чем 2Гб. А Integer только до 2 млрд. значение имеет. Надо использовать Int64.

Всем спасибо...



Страницы: 1 вся ветка

Текущий архив: 2004.03.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
1-25786
Леприкон
2004-02-25 07:25
2004.03.09
Переход от многодокументного интрефейса к однодокументному


1-25745
alexdosh
2004-02-26 15:06
2004.03.09
курсор каретки в TRishEdit


14-25866
Юрий Зотов
2004-02-13 10:05
2004.03.09
---|Ветка была без названия|---


14-25887
Ramdom
2004-02-17 14:10
2004.03.09
Вопрос обладателям Web камер от Creative?


6-25835
redacid
2004-01-04 01:56
2004.03.09
Разрешение IP Address в имя на Win 98 SE