Home » Tutorials » Third-Party-Komponenten » DelphiZip

DelphiZip

Packen

Das Packen erfolgt in ähnlicher Weise, wie das Entpacken. Für das Packen von Dateien ist die DLL ‚ZippDLL.dll‘ zuständig, deren Pfad der Eigenschaft DLLDirectory übergeben werden muss. Üblicherweise befindet sich die DLL im Programmverzeichnis der Anwendung:

Zipmaster1.DLLDirectory:=ExtractFilePath(ParamStr(0));

Für den Pfad+Dateiname des neuen Archivs benutzt man die aus Kapitel 2 bekannte Eigenschaft ZipFilename. Welche Dateien nun dem neuen Archiv hinzugefügt werden sollen, legt man im Property FSpecArgs fest. Per Add können Dateien hinzugefügt werden. Diese Voreinstellungen könnten z.B. so aussehen:

with Zipmaster1 do
begin
  DLLDirectory:=ExtractFilePath(ParamStr(0));
  ZipFilename:=ExtractFilePath(ParamStr(0))+'Archiv.zip';
  FSpecArgs.Add('C:Unit1.pas');
  Add;
end;

Das neue Archiv würde sich dann im Anwendungsverzeichnis befinden und den Namen Archiv.zip tragen. In dem Archiv würde sich nur die Datei ‚Unit1.pas‘ befinden.
Jetzt ist es fast geschafft. Es fehlt nur noch der Aufruf der Pack-Methode, die den Namen Add trägt. Ist alles glatt verlaufen, sollte das Archiv jetzt erstellt sein und kann mit jedem PKZip-kompatiblen Packprogramm gelesen werden.

Alles eine Sache der Einstellung

Den Packvorgang kann man durch das Setzen oder nicht Setzen von bestimmten Einstellungen erheblich beeinflussen. Über die Eigenschaft AddCompLevel kann man die Kompresssionsstärke einstellen. Je größer der Wert ist, desto intensiver und somit kleiner wird das spätere Archiv. Ein kleinerer Wert bedeutet aber einen schnelleren Pack- und Entpackvorgang. Nebenwirkung ist ein größeres resultierendes Archiv. Du kannst zwischen den Werten 0-9 (0 und 9 eingeschlossen) wählen. 9 beduetet größte Kompression, bei einer Einstellung von 0 wird das Archiv nicht komprimiert.
Die Eigenschaft AddOptions, hinter der sich eine Aufzählung verbirgt, bietet weitere Einstellungsmöglichkeiten.

Wert Erläuterung
AddDirNames AddDirnames sorgt dafür, dass Verzeichnissnamen mitgespeichert werden und dass die Verzeichnisstruktur erhalten bleibt.
AddRecurseDirs Diese Option kann dem Programmierer viel Tipparbeit ersparen. Es werden nämlich alle Unterverzeichnisse, vom ausgewählten Verzeichnis inkl- Dateien mit in das Archiv gezippt.
AddMove Die Dateien werden in das Archiv verschoben, dh. sie werden nach dem Packvorgang gelöscht.
AddFreshen Das Archiv wird nicht komplett neu erstellt. Es werden nur die neueren Dateien übernommen. Das spart Zeit.
AddUpdate Es werden nur die Dateien in das Archiv übernommen, die noch nicht vorhanden sind. Ältere Dateien werden nicht durch neuere ersetzt.
AddZipTime Das resultierende Archiv trägt den Zeitstempel der neusten Datei im Archiv.
AddForceDOS Es werden die alten 8.3-Dos-Namenskonventionen eingehalten. Lange Dateinamen werden abgeschnitten.
AddHiddenFiles Es werden auch versteckte Dateien gepackt
AddArchiveOnly Steht dieser Wert auf True werden nur die Dateien gepackt, die ein gesetztes Archiv-Attribut besitzen.
AddReseteArchive Löscht das evtl. vorhandene Archiv-Attribut der Dateien
AddEncrypt Das Archiv wird mit dem in der Eigenschaft Zipmaster1.Password angegebenen Passwort verschlüsselt.
AddSeparateDirs Ist AddSeparateDirs gesetzt werden die Informationen zur Verzeichnisstruktur seperat gepseichert. Damit diese Option Wirkung zeigt, muss der Wert AddDirNames auf True stehen.
AddDiskSpan Diese Option muss gesetzt werden, wenn man das Archiv in mehrere Teile aufsplitten möchte. AddDiskSpan kann nciht mit den Werten AddFreshen oder AddUpdate kombniert werden.
AddDiskSpanErase Ist diese Option gesetzt werden die jeweiligen Datenträger vorher gelöscht.