Zlibar/de
Über
zlibar ist eine Unit, die Komponenten enthält, um ein einfaches komprimiertes Dateiarchiv zu erstellen, das viele Dateien enthält. Sie verwendet paszlib, welches in FreePascal enthalten ist, so daß keine externe Bibliothek benötigt wird.
Die zwei Hauptkomponenten sind :
- TZlibWriteArchive - Verwendet um ein Archiv zu erstellen
- TZlibReadArchive - Verwendet um ein Archiv zu lesen und dessen Dateien zu extrahieren
Features von TZlibWriteArchive :
- Erzeugt das Archiv in einem Datenstrom, erlaubt ihnen es in eine Datei zu speichern oder etwas anderes kreatives damit zu machen
- Jede Datei im Archiv wird mit einer MD5 Prüfsumme abgelegt
- Jede Datei kann mit einem relativem Pfad abgelegt werden
- Enthält Fortschrittsrückmeldungen, um das Programm über den Fortschritt der aktuellen Datei und aller Dateien zu informieren
Features von TZlibReadArchive :
- Lädt das Archiv aus einem TStream.
- Enthält eine Fortschrittsrückmeldung, um das Programm über den Fortschritt des Extraktionsprozesses zu informieren
- Dateien im Archiv sind über eine Indexnummer extrahierbar und werden in ein TStream extrahiert
Der Download enthält ein Demoprogramm und die Unit. Ebenso eine Package Datei.
Obwohl nicht getestet, sollte sie auf jeder Plattform funktionieren.
Änderungen in den Versionen :
0.2.1
- archives should work across different endian machines now.
- fixed bad memory corruption bug
- now requires LCL for endian safeness
Autor
Lizenz
zlibar.pas is distributed with the same modified LGPL as the LCL, so it is possible to use it in proprietary programs.
Download
The latest stable release can be found on the Lazarus CCR Files page.
Abhängigkeiten / Systemvoraussetzungen
- FreePascal
- Demo Program requires Lazarus
- LCL (for endian safe routines)
Issues: Tested on Linux. Needs testing on Windows.
Verwendung
Add the unit "zlibar" to your uses section.
TZLibWriteArchive
Beispiel:
var Zar: TZlibWriteArchive; Stream: TMemoryStream; X: Integer; begin Stream := TMemoryStream.Create; Zar := TZlibWriteArchive.Create; Zar.OutStream := Stream; Zar.InputFiles.Add('/path/to/MyFileName1'); Zar.InputFiles.Add('/path/to/MyFileName2'); Zar.CreateArchive; Stream.SaveToFile('MySavedFileName'); Zar.Free; Stream.Free; end;
TZlibReadArchive
Beispiel:
var ArchStream: TMemoryStream; FileStream: TMemoryStream; ZReadArc: TZlibReadArchive; X: Integer; DestPath: String; begin ArchStream := TMemoryStream.Create; FileStream := TmemoryStream.Create; ArchStream.LoadFromFile('ArchiveFileName'); ZReadArc:= TZlibReadArchive.Create(ArchStream); DestPath := '/Some/Path'; for X := 0 to ZReadArc.Count -1 do begin ZReadArc.ExtractFileToStream(X, FileStream); FileStream.SaveToFile(DestPath+ZReadStream.FilesInArchive[X].FilePath+'/'+ZReadStream.FilesInArchive[X].FIleName); FileStream.Position := 0; FileStream.Size := 0; end; ZReadArc.Free; ArchStream.Free; FileStream.Free; end;