paszlib
Deutsch (de) | English (en) | Polski (pl)
paszlib is a Pascal conversion of the standard zlib library: you don't need any external dependencies. It was implemented by Jacques Nomssi Nzali (his old homepage is dead, see a continuation of the project here). It is used in the FCL to implement the TCompressionStream class.
This class lets you compress and decompress .zip files.
The main unit of this package is paszlib. There are other, auxiliary units, but the only unit that needs to be included in a typical program is this one.
Contents |
TZipper
TZipper implements support for compressing and decompressing .zip files, but does not support all zip compression methods.
Documentation
See official FPC documentation for Zipper
Examples
Zip files
Create a zip file named as parameter 1. Treats all other parameters as filenames to add.
uses Zipper; var OurZipper: TZipper; I: Integer; begin OurZipper := TZipper.Create; try OurZipper.FileName := ParamStr(1); for I := 2 to ParamCount do OurZipper.Entries.AddFileEntry(ParamStr(I), ParamStr(I)); OurZipper.ZipAllFiles; finally OurZipper.Free; end; end.
Unzip files
Unzip all files contained in archive with name given by ZipFilePath to directory entered as UnzippedFolderName.
uses Zipper; var UnZipper: TUnZipper; begin UnZipper := TUnZipper.Create; try UnZipper.FileName := ZipFilePath; UnZipper.OutputPath := UnzippedFolderName; UnZipper.Examine; UnZipper.UnZipAllFiles; finally UnZipper.Free; end; end.
More examples can be found in the FPC source directory [1]
Unzip file to a stream
In Lazarus, drop a TMemo, TButton, TEdit and TFileNameEdit on a form. Clicking the button will read the zip file in FileNameEdit, extract the file specified in the Edit box, and display the content in Memo.
uses Zipper; ... procedure TForm1.Button1Click(Sender: TObject); begin ExtractFileFromZip(FileNameEdit1.FileName,Edit1.Text); end; procedure TForm1.DoCreateOutZipStream(Sender: TObject; var AStream: TStream; AItem: TFullZipFileEntry); begin AStream:=TMemorystream.Create; end; procedure TForm1.DoDoneOutZipStream(Sender: TObject; var AStream: TStream; AItem: TFullZipFileEntry); begin AStream.Position:=0; Memo1.lines.LoadFromStream(Astream); Astream.Free; end; procedure TForm1.ExtractFileFromZip(ZipName, FileName: string); var ZipFile: TUnZipper; sl:TStringList; begin sl:=TStringList.Create; sl.Add(FileName); ZipFile := TUnZipper.Create; try ZipFile.FileName := ZipName; ZipFile.OnCreateStream := @DoCreateOutZipStream; ZipFile.OnDoneStream:=@DoDoneOutZipStream; ZipFile.UnZipFiles(sl); finally ZipFile.Free; sl.Free; end; end;
See also
Go back to Packages List