Zum Hauptinhalt springen

MemCnv

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 Eigenschaft Charset des 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 Eigenschaft Charset des 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 _MemEncBase64 wird 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 _MemDecBase64 wird 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 _ErrData zurückgegeben. Die Datenmenge schrumpft dabei um ein Viertel (25%).

  • Kodierung in hexadezimale Zeichen

    Durch Angabe der Konstanten _MemEncHex wird 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 _MemDecHex wird 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 _ErrData zurü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 mindestens 1024 Byte groß sein oder über automatische Vergrößerung (_MemAutoSize) verfügen.