MemCnv
obj -> MemCnv(handle1, int2) : int
Memory -Objekt konvertieren
Details
- obj: Deskriptor des Quell- Memory -Objekts
- handle1: Deskriptor des Ziel- Memory -Objekts
- int2: Art der Konvertierung (siehe Text)
- Resultat:
intFehlerwert_ErrOkKein Fehler_ErrDataUngültige Zeichen im Quell- Memory -Objekt - Siehe: Verwandte Befehle
Diese Funktion überträgt und konvertiert den Inhalt des Memory -Objekts (obj) in den Speicherbereich des Memory -Objekts (handle1).
info
Das Ziel- Memory -Objekt (handle1) muss mindestens 1024 Byte groß sein. Alternativ kann es auch mit _MemAutoSize angelegt werden.
Mit (int2) kann die Art der Konvertierung angegeben werden:
- Zeichensatzumwandlung Wird ein Zielzeichensatz angegeben (siehe
Charset), erfolgt eine Zeichensatzwandlung. Als Quelllzeichensatz wird die EigenschaftCharsetdes Quell-Objekts (obj) verwendet. Es kann zwischen allen unterstützten Zeichensätzen konvertiert werden. Dabei werden Zeichen, die nicht im Zielzeichensatz darstellbar sind, durch ein Fragezeichen ersetzt. Die EigenschaftCharsetdes Ziel-Objekts (handle1) wird auf den übergebenen Wert gesetzt. Das Resultat ist immer_ErrOk. Zeichen, die nicht umgewandelt werden können werden als Fragezeichen konvertiert. - Kodierung nach Base64 Durch Angabe der Konstanten
_MemEncBase64wird der Inhalt in Base64 kodiert. Die Datenmenge wächst dabei um ein Drittel (33,33%). Es können beliebige binäre Daten kodiert werden. - Dekodierung aus Base64 Mit der Konstanten
_MemDecBase64wird der Inhalt aus Base64 dekodiert. Der Inhalt muss aus gültigen Base64-Daten bestehen. Beim Dekodieren werden Whitespace-Zeichen, wie Leerzeichen und Zeilenumbrüche, ignoriert. Bei nicht erlaubten Zeichen wird der Fehlerwert_ErrDatazurückgegeben. Die Datenmenge schrumpft dabei um ein Viertel (25%). - Kodierung in hexadezimale Zeichen Durch Angabe der Konstanten
_MemEncHexwird der Inhalt in hexadizimale Zeichen kodiert. Die Datenmenge wächst dabei auf das doppelte. Es können beliebige binäre Daten kodiert werden. - Dekodierung aus hexadezimalen Zeichen Mit der Konstanten
_MemDecHexwird der Inhalt aus hexadezimalen dekodiert. Der Inhalt muss aus gültigen Daten bestehen. Beim Dekodieren werden Whitespace-Zeichen, wie Leerzeichen und Zeilenumbrüche, ignoriert. Bei nicht erlaubten Zeichen wird der Fehlerwert_ErrDatazurückgegeben. Die Datenmenge schrumpft dabei um die Hälfte (50%).
Die Eigenschaft Len des Zielobjekts wird bei allen Operationen neu gesetzt.
Resultat
Als Resultat wird _ErrOk zurückgegeben, wenn die Konvertierung erfolgreich war. Bei Konvertierungen mit nicht erlaubten Zeichen wird der Fehlerwert _ErrData zurückgegeben.
Beispiel:
tMemOrg # MemAllocate(_MemAutoSize);
tMemOrg->MemWriteStr(1, '...');
tMemCopy # MemAllocate((tMemOrg->spLen + 2) / 3 * 4);
tMemOrg->MemCnv(tMemCopy, _MemEncBase64);
tMemOrg->MemFree();
tMemCopy->MemFree();
Mögliche Laufzeitfehler:
_ErrHdlInvalid: Der in (obj) oder (handle1) übergebene Deskriptor ist ungültig._ErrValueInvalid: In (int2) wurde kein zulässiger Wert übergeben._ErrStringOverflow: Das Zielobjekt ist bei der Zeichensatzumwandlung nicht groß genug (Size), um das umgewandelte Objekt aufzunehmen. Es muss mindestens1024Byte groß sein oder über automatische Vergrößerung (_MemAutoSize) verfügen.