Форум: "Начинающим";
Текущий архив: 2010.03.21;
Скачать: [xml.tar.bz2];
ВнизРазмер большой папки Найти похожие ветки
← →
Alexey (2010-01-18 15:55) [0]Добрый день!
Для подсчета размера папки я использую след. функцию:
function DirSize(Dir: string): longint;
var
SearchRec : TSearchRec;
begin
result:=0;
if FindFirst(Dir+"\*.*", faAnyFile, SearchRec) = 0 then
try
repeat
if (SearchRec.Attr and faDirectory = faDirectory) then begin
if (SearchRec.Name<>".") and (SearchRec.Name<>"..") then
inc(result, DirSize(Dir + "\" + SearchRec.Name))
end
else
inc(result, SearchRec.Size);
until FindNext(SearchRec) <> 0;
finally
FindClose(SearchRec);
end;
end;
но в этом коде есть 2 главные проблемы:
1. Результат в байтах, соответственно размер больших папок какого типа должен быть?
2. Размер больших папок очень долго считается.
Подскажите, пожалуйста, как быть?
Спасибо!
← →
DVM © (2010-01-18 15:58) [1]
> 1. Результат в байтах, соответственно размер больших папок
> какого типа должен быть?
int64
> 2. Размер больших папок очень долго считается.
ну а что ты хотел
function GetDirectorySize(const Path: string): Int64;
var
FD : TWin32FindData;
FH : THandle;
TempSize: TULargeInteger;
begin
Result := 0;
if Path = "" then exit;
if not(DirectoryExists(Path)) then exit;
FH := Windows.FindFirstFile(PChar(Path + "*.*" ), FD);
repeat
if (FH<>INVALID_HANDLE_VALUE) and (FD.cFileName <> string(".")) and
(FD.cFileName<>string("..")) then
begin
if (FILE_ATTRIBUTE_DIRECTORY and FD.dwFileAttributes) <> 0 then
Inc(Result, GetDirectorySize(Path + FD.cFileName + "\"))
else
begin
TempSize.LowPart := FD.nFileSizeLow;
TempSize.HighPart := FD.nFileSizeHigh;
Inc(Result, TempSize.QuadPart);
end;
end;
until Windows.FindNextFile(FH, FD) = false;
if FH <> 0 then Windows.FindClose(FH);
end;
← →
Игорь Шевченко © (2010-01-18 17:03) [2]оба метода неверные, так как не учитывают цели, для которой надо считать
← →
Alexey (2010-01-18 17:32) [3]Цель одна - просто узнать размер папки чтобы предоставить его пользователю
← →
Alexey (2010-01-18 17:36) [4]DVM:
Если честно, ваш метод вообще у меня не работает
← →
Jeer © (2010-01-18 17:37) [5]
> просто узнать размер папки
И что есть "размер папки" ?
← →
Игорь Шевченко © (2010-01-18 18:01) [6]
> Цель одна - просто узнать размер папки чтобы предоставить
> его пользователю
http://transl-gunsmoker.blogspot.com/2009/12/blog-post_28.html
← →
DVM © (2010-01-18 18:01) [7]
> Alexey (18.01.10 17:36) [4]
> DVM:
> Если честно, ваш метод вообще у меня не работает
на конце пути слеш надо, ну или код поправь чтобы там было IncludeTrailingBackslash
GetDirectorySize("d:\downloads\")
← →
Alexey (2010-01-18 18:02) [8]Jeer:
Правая кнопка мыши -> Свойства -> вкладка "Общие"
← →
Alexey (2010-01-18 18:03) [9]DVM:
Все, работает)
← →
DVM © (2010-01-18 18:08) [10]
> Правая кнопка мыши -> Свойства -> вкладка "Общие"
учитывает:
> http://transl-gunsmoker.blogspot.com/2009/12/blog-post_28.
> html
?
← →
Alexey (2010-01-18 18:17) [11]
> > Правая кнопка мыши -> Свойства -> вкладка "Общие"
>
> учитывает:
>
> > http://transl-gunsmoker.blogspot.com/2009/12/blog-post_28.
>
> > html
>
> ?
>
А хз, мне таких данных было бы достаточно
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.03.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c