Главная страница
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.024 c
14-25896
Тимохов
2004-02-11 11:23
2004.03.09
Рихтер I


1-25733
Rayslava
2004-02-26 17:48
2004.03.09
RichEdit из Dll


3-25698
Александр Сташевский
2004-02-10 20:43
2004.03.09
DBGridEh


3-25694
StasN
2004-02-09 18:29
2004.03.09
Поможите люди добрые SQL запрос составить!


1-25746
KA
2004-02-26 17:27
2004.03.09
Переделать диалог.