Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.013 c
8-1115212285
Артём
2005-05-04 17:11
2005.09.18
Как в Listbox сделать нумерацб?


1-1124994267
TStas
2005-08-25 22:24
2005.09.18
Как подключить файл помощи?


1-1124700897
SpyBoy
2005-08-22 12:54
2005.09.18
размер каталога вместе с содержимым


1-1125238566
Profi
2005-08-28 18:16
2005.09.18
Проблема при работе с TreeView


14-1124794818
Shlomo
2005-08-23 15:00
2005.09.18
Первая Ошибка!?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский