(28-04-2024, Saat: 13:25)nehirnnn Adlı Kullanıcıdan Alıntı: Forumda biraz araştırdım. İki bileşen buldum. TZip ve Zipforge.
TZip ile parola korumalı bir dosyanın android için nasıl unzip yapılacağını bulamadım. Diğer bileşen de galiba sadece VCL için.
Eğer elinizde basit bir örnek varsa, bunu nasıl yapacağım konusunda yardımcı olursanız sevinirim.
Yapmak istediğm şey projemin ana dizininde bulunan, parola korumalı bir zip dosyasını TPath.GetDocumentsPath yoluna çıkarmak.
Edit1 de Password yazılıdır...
Orayı okur Şifreler veya O Şifreye Göre Unzip yapar.
ZipForge bileşeniyle yapmıştım.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ZipForge, ComCtrls;
type
TForm1 = class(TForm)
Archiver: TZipForge;
Button1: TButton;
Button2: TButton;
ProgressBar1: TProgressBar;
lblFile: TLabel;
Button3: TButton;
Button4: TButton;
Edit1: TEdit;
Label1: TLabel;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ZipForge1FileProgress(Sender: TObject; FileName: WideString;
Progress: Double; Operation: TZFProcessOperation;
ProgressPhase: TZFProgressPhase; var Cancel: Boolean);
procedure ZipForge1OverallProgress(Sender: TObject; Progress: Double;
Operation: TZFProcessOperation; ProgressPhase: TZFProgressPhase;
var Cancel: Boolean);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//- BURASI İŞLEMDE OLAN DOSYAYI VE PROGRESSBARI İŞLİYOR------
procedure TForm1.ZipForge1FileProgress(Sender: TObject;
FileName: WideString; Progress: Double; Operation: TZFProcessOperation;
ProgressPhase: TZFProgressPhase; var Cancel: Boolean);
begin
MEMO1.Clear;
Memo1.Lines.Add ('Extracting: ' + FileName); // Dosya adını ve yolunu Memoya işliyor
Application.ProcessMessages;
end;
procedure TForm1.ZipForge1OverallProgress(Sender: TObject;
Progress: Double; Operation: TZFProcessOperation;
ProgressPhase: TZFProgressPhase; var Cancel: Boolean);
begin
ProgressBAR1.Position := Trunc(Progress);
Application.ProcessMessages;
end;
//-----------------------
//************************** ZİP İŞLEMLERİ *****************************
// Dosya Zip
procedure TForm1.Button1Click(Sender: TObject);
begin
try
with archiver do
begin
Password:=Edit1.Text;
FileName := 'C:\test_FILE.zip';
OpenArchive(fmCreate);
BaseDir := 'C:\';
AddFiles('c:\A.XLS');
CloseArchive();
end;
except
on E: Exception do
begin
Writeln('Exception: ', E.Message);
Readln;
end;
end;
end;
// Klasör ZİP
procedure TForm1.Button2Click(Sender: TObject);
begin
try
with archiver do
begin
Password:=Edit1.Text;
FileName := 'C:\test_FOLDERS.zip';
OpenArchive(fmCreate);
BaseDir := 'C:\';
AddFiles('C:\PUAN\*.*'); // PUAN KLASÖRÜNÜ ZİPLE
CloseArchive();
end;
except
on E: Exception do
begin
Writeln('Exception: ', E.Message);
Readln;
end;
END;
END;
//***************UNZİP İŞLEMLERİ *********************************
// Dosya Unzip
procedure TForm1.Button3Click(Sender: TObject);
begin
try
with archiver do
begin
PASSWORD:=edit1.Text;
FileName := 'C:\test_FILE.zip';
OpenArchive(fmOpenRead);
BaseDir := 'C:\';
ExtractFiles('*.*');
CloseArchive();
end;
except
on E: Exception do
begin
Writeln('Exception: ', E.Message);
Readln;
end;
end;
end;
// Klasör Unzip
procedure TForm1.Button4Click(Sender: TObject);
begin
try
with archiver do
begin
PASSWORD:=Edit1.Text;
FileName := 'C:\test_FOLDERS.zip';
OpenArchive(fmOpenRead);
BaseDir := 'C:\';
ExtractFiles('*.*');
CloseArchive();
end;
except
on E: Exception do
begin
Writeln('Exception: ', E.Message);
Readln;
end;
end;
end;
END.