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

Вниз

Быстро получить размер каталога   Найти похожие ветки 

 
Status   (2004-02-23 00:48) [0]

Как быстро получить размер каталога большого объёма (допустим в папке около 1000 картинок и папка занимает более 500 МБ).
Я использую следующую процедуру. Когда с помощью неё получаю размер большого каталога, то это занимает несколько секунд:

procedure GetDirSize(Dir: string);
var SearchRec: TSearchRec;
Separator: string;
begin
if Copy(Dir, Length(Dir), 1) = "\" then Separator := ""
else Separator := "\";
if FindFirst(Dir + Separator + "*.*", faAnyFile, SearchRec) = 0 then begin
if FileExists(Dir + Separator + SearchRec.Name) then begin
DirBytes := DirBytes + GetFileSize(Dir + Separator +SearchRec.name);
end
else
if DirectoryExists(Dir + Separator + SearchRec.Name) then begin
if (SearchRec.Name <> ".") and (SearchRec.Name <> "..") then
GetDirSize(Dir + Separator + SearchRec.Name);
end;
while FindNext(SearchRec) = 0 do begin
if FileExists(Dir + Separator + SearchRec.Name) then begin
DirBytes := DirBytes + GetFileSize(Dir + Separator +SearchRec.name);
end
else
if DirectoryExists(Dir + Separator + SearchRec.Name) then begin
if (SearchRec.Name <> ".") and (SearchRec.Name <> "..") then begin
GetDirSize(Dir + Separator + SearchRec.Name);
end;
end;
end;
end;
FindClose(SearchRec);
end;


 
Palladin ©   (2004-02-23 01:05) [1]

А что эксплорер или FAR за меньшее время справляются?


 
Palladin ©   (2004-02-23 01:08) [2]

Кстати TSearchRec уже содержит информацию о размере файла и вызов GetFileSize абсолютно лишний.


 
Gero ©   (2004-02-23 01:14) [3]

И проверка if FileExists тоже лишняя...


 
Anatoly Podgoretsky ©   (2004-02-23 07:49) [4]

И DirectoryExists тоже лишнее и вот если эти три штуки выкинешь с небольшими переделками алгоритма, то скорость возрастет неимоверно.


 
Status   (2004-02-23 12:45) [5]

Спасибо, всё получилось, теперь почти мгновенно определяет 500 МБ :)



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

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

Наверх




Память: 0.47 MB
Время: 0.016 c
4-12575
Magic_CT
2003-12-29 10:46
2004.03.05
Handle and filename


7-12564
nejest
2003-12-17 17:47
2004.03.05
звук из спикера под win 9x NT 2000 XP


1-12369
s_ser
2004-02-25 11:47
2004.03.05
Тип данных TDateTime


1-12422
Вованчик
2004-02-24 15:52
2004.03.05
Рекурсивная функция


1-12357
dm37
2004-02-25 15:04
2004.03.05
time