Главная страница
    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.45 MB
Время: 0.008 c
14-25853
Petr V. Abramov
2004-02-14 21:41
2004.03.09
Soft Must Be Free!


1-25804
NPR2
2004-02-25 13:28
2004.03.09
запуск процедуры в определенное время


1-25760
Ш-К
2004-02-26 13:51
2004.03.09
Дин. массивы.


14-25922
slivka
2004-02-15 17:58
2004.03.09
Помогите в борьбе вирусами.


1-25750
OlimPer
2004-02-26 17:39
2004.03.09
mainmenu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский