close
TurboPower Abbrevia 是一套for Embarcadero Delphi, C++Builder 程式開發工具上的壓縮軟體工具。
從Delphi 6所使用的Vclzip 無法繼續在Delphi XE2使用。
於是找到這套FREEWARE的壓縮軟體。
官網:http://sourceforge.net/projects/tpabbrevia/
下載:http://sourceforge.net/projects/tpabbrevia/files/latest/download
咦!! Delphi XE2不是有Native的壓縮軟體 TZIPFILE,但是發現java.util.zip 壓出來的zip(ZLIB格式)不行解壓縮。(希望下個版本能提供修正)
Embarcadero Bug report:TZipFile: zip extracted with 0-size files.
http://qc.embarcadero.com/wc/qcmain.aspx?da=128 顯示Zip蠻多Bug尚未解決(101/3/17 updated)
紀錄Abbrevia幾個使用壓縮及解壓縮的程式碼範例。
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, AbZipper, Vcl.StdCtrls, AbUnzper, AbUtils; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; BtnZipOne: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Edit5: TEdit; Label5: TLabel; BtnZipFolder: TButton; BtnUnzip: TButton; Label6: TLabel; Edit6: TEdit; Memo1: TMemo; procedure BtnZipOneClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure BtnZipFolderClick(Sender: TObject); procedure BtnUnzipClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.BtnZipOneClick(Sender: TObject); VAR oZip: TAbZipper; // uses AbZipper begin {壓縮一個檔案} oZip := TAbZipper.Create(self); try oZip.FileName := Edit4.Text; // 'c:\test1.zip'; // oZip.BaseDirectory := 'c:\temp\'; oZip.DeleteFiles('*.*'); // 清除zip內所有檔案 oZip.AddFiles(Edit1.Text, faAnyFile); oZip.Save; Memo1.Lines.Add(Edit1.Text + ' zip to ' + Edit4.Text); finally freeandNil(oZip); end; end; procedure TForm1.BtnZipFolderClick(Sender: TObject); VAR oZip: TAbZipper; // uses AbZipper begin {壓縮一個目錄} oZip := TAbZipper.Create(self); try oZip.FileName := Edit5.Text; // 'c:\test1.zip'; oZip.BaseDirectory := Edit2.Text; // 'c:\auto\ oZip.DeleteFiles('*.*'); // 清除zip內所有檔案 oZip.AddFiles('*', faAnyFile); oZip.Save; Memo1.Lines.Add(Edit2.Text + ' zip to ' + Edit5.Text); finally freeandNil(oZip); end; end; procedure TForm1.BtnUnzipClick(Sender: TObject); var AbUnZip: TAbUnZipper; // uses AbUnzper aPath: string; begin {解壓縮檔案} AbUnZip := TAbUnZipper.Create(nil); try //unzip 包含路徑也一併解 AbUnZip.ExtractOptions := oAbUnZipper.ExtractOptions +[eoRestorePath]; AbUnZip.FileName := Edit3.Text; // c:\test3.zip aPath := Edit6.Text; // 'c:\temp\a1\'; AbUtils.AbCreateDirectory(aPath); // 不會自己建目錄,須自己來 uses AbUtils AbUnZip.BaseDirectory := aPath; // set BaseDirectory 若目錄不存在會報錯 AbUnZip.ExtractFiles('*.*'); Memo1.Lines.Add(Edit3.Text + ' unzip to ' + Edit6.Text); finally freeandNil(AbUnZip); end; end; procedure TForm1.FormCreate(Sender: TObject); begin Memo1.Lines.Clear; end; end.
文章標籤
全站熱搜
留言列表