Version 6.5.3 (Geändert)
COMPRESS BLOB (Blob{; Komprimierung})
Parameter | Typ | Beschreibung | |
Blob | BLOB | Zu komprimierendes BLOB | |
Komprimierung | Numerisch | Wenn angegeben: | |
1, komprimiert so kompakt wie möglich | |||
2, komprimiert so schnell wie möglich |
Beschreibung
Der Befehl COMPRESS BLOB komprimiert Blob mit dem internen Komprimierungsalgorithmus von 4D. Dieser Befehl komprimiert nur BLOBs, die größer als 255 Bytes sind.
Mit dem optionalen Parameter Komprimierung legen Sie fest, wie das BLOB komprimiert wird:
Übergeben Sie 1, wird das BLOB so kompakt wie möglich komprimiert. Die Komprimierungsgeschwindigkeit sowie die Operationen zum Entkomprimieren werden dabei nicht berücksichtigt.
Übergeben Sie 2, wird das BLOB so schnell wie möglich komprimiert bzw. entkomprimiert. Die Komprimierungsrate wird dabei nicht berücksichtigt , d.h das komprimierte BLOB ist größer.
Übergeben Sie einen anderen Wert oder geben Sie den Parameter nicht an, wird das BLOB mit dem Modus 1 so weit wie möglich komprimiert.
4D bietet folgende vordefinierten Konstanten:
Konstante | Typ | Wert |
Compact compression mode | Lange Ganzzahl | 1 |
Fast compression mode | Lange Ganzzahl | 2 |
Nach dem Aufruf hat die OK Variable den Wert 1, wenn das BLOB erfolgreich komprimiert wurde. Andernfalls hat die OK Variable den Wert 0. Dann gibt es zwei Möglichkeiten:
1- Der Fehler ist unwichtig (Speicherproblem, Blobgröße). Es wird kein Fehler generiert. Die aufrufende Methode wird weiter ausgeführt.
2- Der Fehler ist wichtig, d.h. BLOB ist beschädigt. Der Fehler 10600 wird generiert. Sie können ihn mit der Projektmethode ON ERR CALL verwalten.
Mit dem Befehl EXPAND BLOB können Sie ein komprimiertes BLOB entkomprimieren.
Mit dem Befehl BLOB PROPERTIES können Sie feststellen, ob ein BLOB komprimiert ist.
Warnung: Ein komprimiertes BLOB ist weiterhin ein BLOB, Sie können also weiterhin dessen Inhalt verändern. In diesem Fall kann der Befehl EXPAND BLOB das BLOB jedoch nicht korrekt entkomprimieren.
Beispiele
1. Dieses Beispiel prüft, ob das BLOB vxMyBlob komprimiert ist, und komprimiert es gegebenenfalls:
BLOB PROPERTIES (vxMyBlob;$vlCompressed;$vlExpandedSize;$vlCurrentSize) If ($vlCompressed=Is not compressed) COMPRESS BLOB (vxMyBlob) End if
Wenden Sie den Befehl COMPRESS BLOB auf ein bereits komprimiertes BLOB an, erkennt er das und führt nichts aus.
2. Dieses Beispiel wählt ein Dokument aus und komprimiert es:
$vhDocRef := Open document ("") If (OK=1) CLOSE DOCUMENT ($vhDocRef) DOCUMENT TO BLOB (Document;vxBlob) If (OK=1) COMPRESS BLOB (vxBlob) If (OK=1) BLOB TO DOCUMENT (Document;vxBlob) End if End if End if
Referenz
Systemvariablen oder Mengen
Wurde das BLOB erfolgreich komprimiert, hat die OK Variable den Wert 1; andernfalls den Wert 0.