Inhaltsverzeichnis
28.1.1 Klasse Compress
Für das Komprimieren einer Datei oder das Verpacken einer einzelnen Datei in ein Archiv sind vor allem diese 4 ausgewählten Eigenschaften und die Methode Compress.File interessant:
| Eigenschaft | Beschreibung |
|---|---|
| Type | Bevor Sie eine der Methoden dieser Klasse verwenden können, müssen Sie den Kompressionstreiber auswählen, den Sie verwenden wollen. Zur Wahl stehen 2: zlib oder bzlib2 |
| Min | Kleinster Kompressionsgrad (Level=1) für den verwendeten Kompressionstreiber |
| Default | Standard-Kompressionsgrad: zlib → 6 und bzlib2 → 9 |
| Max | Größter Kompressionsgrad ist für zlib und bzlib2 gleich 9 |
Tabelle 28.1.1.1: Eigenschaften der Klasse Compress
Die Methode Compress.File hat folgende Syntax:
SUB File ( Source AS String, Target AS String [ , Level AS Integer ] )
Source: Pfad zur zu verpackenden Datei Target: Pfad der Archiv-Datei. Ist das Archiv bereits vorhanden, wird es ohne Rückfrage überschrieben. Level: Die Angabe des Kompressionsgrades ist optional. Fehlt diese Angabe, dann wird der Standard-Kompressionsgrad (Tabelle 28.1.1.1) für den verwendeten Kompressionstreiber verwendet.
Abbildung 28.1.1.1: Programm zum Verpacken einer Datei nach zwei unterschiedlichen Algorithmen
28.1.1.1 Projekt Compress
Für dieses Projekt wird der vollständige Quelltext angegeben und in den folgenden Kommentaren kurz erläutert:
' Gambas class file ' Um eine komprimierte Datei zu generieren, benötigen Sie die Komponente gb.compress! Private sFileSource As String Private sFileTarget As String Private sCompLevel As String Private sExtension As String Public Sub Form_Open() FMain.Center FMain.Resizable = False SpinBoxZLIB.MinValue = 1 ' Best speed SpinBoxZLIB.MaxValue = 9 ' Best compression SpinBoxZLIB.Value = 6 ' Default SpinBoxBZLIB2.MinValue = 1 ' Best speed - Fast SpinBoxBZLIB2.MaxValue = 9 ' Best compression SpinBoxBZLIB2.Value = 9 ' Default End ' Form_Open() Public Sub btnCompressZLIB_Click() Dim Cp As New Compress sExtension = ".gz" Dialog.Filter = ["*.csv", "CSV-Datei", "*", "Alle Dateien"] Dialog.Path = User.Home Dialog.Title = "Wählen Sie eine Datei aus!" If Dialog.OpenFile() Then Return sFileSource = Dialog.Path sFileTarget = sFileSource & sExtension Cp.Type = "zlib" Cp.File(sFileSource, sFileTarget, SpinBoxZLIB.Value) End ' btnCompressZLIB_Click() Public Sub btnCompressBZLIB2_Click() Dim Cp As New Compress sExtension = ".bz2" Dialog.Filter = ["*.csv", "CSV-Datei", "*", "Alle Dateien"] Dialog.Path = User.Home Dialog.Title = "Wählen Sie eine Datei aus!" If Dialog.OpenFile() Then Return sFileSource = Dialog.Path sFileTarget = sFileSource & sExtension Cp.Type = "bzlib2" Cp.File(sFileSource, sFileTarget, SpinBoxZLIB.Value) End ' btnCompressBZLIB2_Click()
28.1.1.2 Kommentare
- Zuerst werden die Bereiche für den Kompressionsgrad festgelegt (SpinBoxen) und der Standard-Kompressionsgrad für die beiden Kompressionstreiber festgesetzt.
- Dann wird ein Compress-Objekt erzeugt und es erfolgt die Festlegung der Datei-Extension für den verwendeten Kompressionstreiber.
- Danach können Sie im Dialog die zu komprimierende Datei auswählen. Der Datei-Filter ist im Projekt auf csv-Dateien eingestellt. Diese Einstellung können Sie an Ihre Vorstellungen anpassen. Die generierte Archiv-Datei mit der zugewiesenen Extension hat im vorliegenden Fall den gleichen Namen wie die Original-Datei und wird im gleichen Verzeichnis abgespeichert wie die Original-Datei.
- Abschließend wird die ausgewählte Datei nach dem gewählten Algorithmus (Type) und mit dem eingestellten Kompressionsgrad (SpinBox) unter Verwendung der Pfade für die von Quell- und Ziel-Datei verpackt.

