MemCompress
obj -> MemCompress(int1[, int2[, int3[, int4[, handle5[, int6]]]]]) : int
Speicherbereich komprimieren
Details
- obj: Quelle / Ziel ( Memory -Objekt)
- int1:
- Kompressionsformat:
_ComprFmtDeflate_ComprFmtGzip_ComprFmtZlib
- int2: Kompressionsstufe (optional)
- int3: Quellposition (optional)
- int4: Quelllänge (optional)
- handle5: Ziel ( Memory -Objekt, optional)
- int6: Zielposition (optional)
- Resultat:
intFehlerwert - Siehe: Verwandte Befehle ,
MemUncompress (),FsiFileCompress ()
Dieser Befehl komprimiert den Inhalt des Memory-Objektes (obj).
Es muss eines der folgenden Kompressionsformate (int1) angegeben werden:
_ComprFmtDeflate: DEFLATE-Format_ComprFmtGzip: GZIP-Format_ComprFmtZlib: ZLIB-Format
Als Kompressionsstufe (int2) können Werte zwischen 0 (keine Komprimierung) und 9 (maximale Komprimierung) angegeben werden. Alternativ wird mit _ComprLvlDefault die Standard-Komprimierungsstufe angegeben.
Im Parameter (int3) kann die Quellposition angegeben werden. Ist dieser Wert nicht angegeben oder 0, werden die Daten ab Beginn des Memory -Objektes komprimiert.
Der Parameter (int4) gibt die zu komprimierende Länge an. Ist dieser Wert nicht angegeben, 0 oder _MemDataLen wird der restliche Inhalt (nach der Quellposition) des Memory -Objektes komprimiert.
Optional kann im Parameter (handle5) ein Ziel-Memory-Objekt angegeben werden. Ist dieses nicht angegeben oder ist es identisch mit dem Quellobjekt (obj), wird in das Quellobjekt geschrieben. Hierbei werden alle Daten verworfen, die hinter dem Dateifuß des Kompressionsformats vorhanden waren.
Zusätzlich kann eine Zielposition (int6) angegeben werden, wenn nicht an den Anfang des Ziel-Objektes geschrieben werden soll. Alle vorhandenen Daten ab der Position werden überschrieben.
Beispiele
// Inhalt des Memory-Objektes tMemSrc in neues Memory-Objekt im GZIP-Format komprimieren
tMemSrc->MemCompress(_ComprFmtGzip, _ComprLvlDefault, 0, 0, tMemDst);
// Inhalt des Memory-Objektes im gleichen Memory-Objekt im DEFLATE-Format komprimieren
tMem->MemCompress(_ComprFmtDeflate, 9);
// Komprimierten Inhalt des Memory-Objektes hinter bestehenden Inhalt schreiben
tMem->MemCompress(_ComprFmtGzip, 9, 1, _MemDataLen, tMem, tMem->spLen + 1);
Fehlerwerte
Folgende Fehlerwerte können von der Funktion zurückgegeben werden:
_ErrOk: Kein Fehler aufgetreten._ErrGeneric: Interner Fehler aufgetreten.
Mögliche Laufzeitfehler:
_ErrHdlInvalid: Einer der übergeben Deskriptoren (obj) oder (handle5) ist ungültig._ErrMemExhausted: Nicht genug Speicher vorhanden._ErrValueInvalid: Im Kompressionsformat (int1) oder Kompressionsstufe (int2) wurde ein ungültiger Wert angegeben._ErrValueRange: Eine der Längen- oder Positionsangaben (int3), (int4) oder (int6) ist ungültig. Der komprimierte Inhalt kann im ungünstigsten Fall länger werden als der unkomprimierte Inhalt. Übersteigt die Länge den zu Verfügung stehenden Platz des Ziel-Memory-Objektes wird der Laufzeitfehler ebenfalls generiert.