В данной статье мы рассмотрим, как работать с архивами ZIP в Delphi, а именно: как создавать архивы и настраивать параметры сжатия при их создании. Для этого мы будем использовать компоненты и функции, предоставляемые встроенным модулем ZipForge.
Создание архива ZIP
Для начала давайте создадим простой архив ZIP, содержащий несколько файлов. Создайте новую форму в Delphi и поместите на нее следующие компоненты:
TButton (Knopka1)
TOpenDialog (OpenDialog1)
TSaveDialog (SaveDialog1)
TZipListBox (ZipListBox1)
В коде формы добавьте следующие переменные и процедуры:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, IdZip, IdZipLib;
type
TForm1 = class(TForm)
Knopka1: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
ZipListBox1: TZipListBox;
procedure Knopka1Click(Sender: TObject);
private
{ Private declarations }
FZip: TIdZip;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Knopka1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
SaveDialog1.InitialDir := OpenDialog1.Dir;
if SaveDialog1.Execute then
begin
FZip := TIdZip.Create(nil);
try
FZip.EncryptionMethod := idzipemNone;
FZip.Open(SaveDialog1.FileName, fmCreate);
FZip.AddFile(OpenDialog1.FileName, OpenDialog1.FileName);
FZip.SaveToStream(FZip);
ZipListBox1.Items.Assign(FZip.GetFilesList);
finally
FZip.Free;
end;
end;
end;
end;
end.
В данном примере мы создаем экземпляр компонента TIdZip, открываем его для создания архива, добавляем в архив файл, указанный в OpenDialog1, сохраняем архив в файл, указанный в SaveDialog1, и заполняем список файлов в ZipListBox1.
Настройка параметров сжатия
Теперь давайте посмотрим, как настроить параметры сжатия при создании архива ZIP. Для этого мы можем использовать свойства компонента TIdZip, такие как CompressionLevel, CompressionMethod и т.д.
Добавьте на форму компоненты TComboBox (ComboBox1 и ComboBox2) и TTrackBar (TrackBar1). В коде формы добавьте следующие переменные и процедуры:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, IdZip, IdZipLib;
type
TForm1 = class(TForm)
Knopka1: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
ZipListBox1: TZipListBox;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
TrackBar1: TTrackBar;
procedure Knopka1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
private
{ Private declarations }
FZip: TIdZip;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Knopka1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
SaveDialog1.InitialDir := OpenDialog1.Dir;
if SaveDialog1.Execute then
begin
FZip := TIdZip.Create(nil);
try
FZip.EncryptionMethod := idzipemNone;
FZip.CompressionLevel := TrackBar1.Position;
FZip.CompressionMethod := ComboBox1.ItemIndex;
FZip.Open(SaveDialog1.FileName, fmCreate);
FZip.AddFile(OpenDialog1.FileName, OpenDialog1.FileName);
FZip.SaveToStream(FZip);
ZipListBox1.Items.Assign(FZip.GetFilesList);
finally
FZip.Free;
end;
end;
end;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
FZip.CompressionMethod := ComboBox1.ItemIndex;
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
FZip.EncryptionMethod := ComboBox2.ItemIndex;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
FZip.CompressionLevel := TrackBar1.Position;
end;
end.
В данной статье рассматривается процесс создания архивов ZIP в среде Delphi с использованием встроенного модуля ZipForge и настройка параметров сжатия при их создании.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.