Bevor wir Dateien austauschen (z. B. per E-Mail), komprimieren wir sie oft, um ihre Größe vor der Übertragung zu verringern. Mit 4D v18 können Sie Ihre Dateien durch Programmierung komprimieren und dekomprimieren, ohne dass Sie externe Bibliotheken oder Tools benötigen. Hier sind die neuen Befehle, die dies ermöglichen:
Komprimieren von Dateien und Ordnern
Der neue Zip Create archive ermöglicht es Ihnen, ein Zip-Archiv zu erstellen, indem Sie entweder eine Datei, einen Ordner oder ein Objekt mit Parametern(z. B. ein Passwort zum Lesen des Archivs) übergeben.
Komprimieren Sie eine Datei:
C_OBJECT($file;$destination)
$destination :=Folder(fk desktop folder).file("MyDocs/file.zip")
$file :=Folder(fk desktop folder).file("MeineDokumente/Text.txt")
ZIP Create archive (
$file;$destination)
Einen Ordner komprimieren:
C_OBJECT($folder;$destination)
$destination :=Folder(fk desktop folder).file("MyDocs/Images.zip")
$folder :=Folder(fk desktop folder).folder("MyDocs/Images")
ZIP Create archive ($folder;$destination)
Komprimieren mit Passwort und Fortschrittsbalken:
C_OBJECT($zip)
$destination :=Folder(fk desktop folder).file("MyDocs/Archive.zip")
$zip :=New object
$zip .files:=Folder(fk desktop folder).folder("MyDocs/Resources").folders()
$zip .password:="Passwort"
$zip .callback:=Formula(FormulaCompressing ($1))
progID :=Progress New
ZIP Create archive (
$zip;$destination)
Progress QUIT (progID)
Die Methode FormulaCompressing:
Progress SET PROGRESS (progID;Num($1/100))
Dekomprimieren von Dateien und Ordnern
Ein neuer ZIP Read archive Befehl gibt ein Archivobjekt zurück. Durch Manipulation dieses Objekts können Sie auf einfache Weise die Liste der Dateien innerhalb des Archivs abrufen, eine bestimmte Datei oder das gesamte Archiv extrahieren usw.
Lesen Sie den Inhalt des Archivs
C_OBJECT($archive;$path)
$path :=Folder(fk desktop folder).file("MyDocs/Archive.zip")
$archive :=ZIP Read archive($path)
Abrufen der Liste von Dateien und Ordnern
$folders:=$archive.root.folders()
$files :=$archive.root.files()
Lesen des Inhalts einer Datei ohne Extraktion
If ($files[$i].extension=".txt")
$txt :=$files[$i].getText()
Else
$blob :=$files[$i].getContent()
End if
Datei aus dem Archiv extrahieren
$folderResult:=$files[$i].copyTo(Folder(fk desktop folder).folder("MyDocs"))
Alle Dateien extrahieren
$folderResult:=$archive.root.copyTo(Folder(fk desktop folder).folder("MyDocs"))