Форум: "Основная";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Внизразмер каталога вместе с содержимым Найти похожие ветки
← →
SpyBoy © (2005-08-22 12:54) [0]Для того, чтобы узнать размер каталога вместе с содержимым, использую конструкцию
procedure GetDirSize(const aPath: string; var SizeDir: Int64);
var
SR: TSearchRec;
tPath: string;
begin
tPath := IncludeTrailingBackSlash(aPath);
if FindFirst(tPath + "*.*", faAnyFile, SR) = 0 then
begin
try
repeat
if (SR.Name = ".") or (SR.Name = "..") then
Continue;
if (SR.Attr and faDirectory) <> 0 then
begin
GetDirSize(tPath + SR.Name, SizeDir);
Continue;
end;
SizeDir := SizeDir +
(SR.FindData.nFileSizeHigh shl 32) +
SR.FindData.nFileSizeLow;
until FindNext(SR) <> 0;
finally
Sysutils.FindClose(SR);
end;
end;
end;
Пример использования:
procedure TForm1.Button1Click(Sender: TObject);
var
SizeDir: Int64;
begin
SizeDir := 0;
GetDirSize("c:\winnt", SizeDir);
ShowMessage("Размер каталога " + IntToStr(SizeDir));
end;
Однако это так долго!!
Может есть болеее быстрый способ-
аналог правой кнопкой по папке->свойства ?
← →
begin...end © (2005-08-22 14:05) [1]
uses ComObj;
var
FSObject, Folder: OleVariant;
begin
FSObject := CreateOleObject("Scripting.FileSystemObject");
Folder := FSObject.GetObject("C:\WinNT");
ShowMessage(IntToStr(Folder.Size))
end.
← →
Anatoly Podgoretsky © (2005-08-22 14:09) [2]SpyBoy © (22.08.05 12:54)
Так правой кнопкой по папке->свойства также очень долго.
← →
SpyBoy © (2005-08-23 23:00) [3]begin...end © (22.08.05 14:05) [1]
НЕ работает однако:(((((((((
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EOleError with message "Method "GetObject" not supported by automation object". Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
← →
Юрий Зотов © (2005-08-23 23:25) [4]Там GetFolder. И Size - уже строка.
procedure TForm1.Button1Click(Sender: TObject);
var
FSObject, Folder: OleVariant;
begin
FSObject := CreateOleObject("Scripting.FileSystemObject");
Folder := FSObject.GetFolder("C:\WinNT");
ShowMessage(Folder.Size)
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c