Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как узнать размер распакованного zip-файла?

493
24 декабря 2001 года
Taras
24 / / 20.09.2000
Hello All!

Использовал библиотеку ZipTV v2.52
Там эта проблема решается перебором всех
файлов в архиве и суммированием их размеров.
ZipTV1.GetFileUnpackedSize(path)

Zip-архиве может быть большое количество файлов, на определение размера каждого файла в архиве тратится 0.1 - 0.3 секунды.
Представьте себе сколько надо времени, если файлов в архиве 15 000!

Существуют ли быстрые способы определения размера распакованного zip-файла?

С уважением Тарас,
[EMAIL]tarnet@pisem.net[/EMAIL]
493
24 декабря 2001 года
Taras
24 / / 20.09.2000
Уже сам решил эту проблему
И помог мне в этом компонент TFindFile
библиотеки ZipTV 2.52

Код выглядит так

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ztvMain, ztvBase, ztvFindFile, ztvZipTV;

type
TForm1 = class(TForm)
Button1 TButton;
FindFile1 TztvFindFile;
procedure Button1Click(Sender TObject);
procedure FindFile1FoundFile(Sender TObject);
procedure FindFile1Deactivate(Sender TObject);
procedure FindFile1CurrentFile(Sender TObject; Filename String);
procedure FindFile1Activate(Sender TObject); //без этого обработчика события, FindFile1 работать не будет !!!
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1 TForm1;
TotalUnpackedSize Integer;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender TObject);
begin
FindFile1.RootDir = 'C\ZipTV\demos\fileinarc'; //стартовый директорий
FindFile1.FileSpec.Clear;
FindFile1.FileSpec.Add( '*.*' );
FindFile1.Find( 'info.zip' ); //в директории сканировать только определенный zip - файл
end;

procedure TForm1.FindFile1FoundFile(Sender TObject);
var ZipTV TZipTV;
begin
ZipTV = TZipTV( Sender );
TotalUnpackedSize = TotalUnpackedSize + ZipTV.UnpackedSize;
end;

procedure TForm1.FindFile1Deactivate(Sender TObject);
begin
ShowMessage(IntToStr(TotalUnpackedSize));
end;

procedure TForm1.FindFile1Activate(Sender TObject);
begin
TotalUnpackedSize = 0;
end;

procedure TForm1.FindFile1CurrentFile(Sender TObject; Filename String);
begin
//наличие этого обработчика обязательно...
end;


Тарас, [EMAIL]tarnet@pisem.net[/EMAIL]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог