Zum Hauptinhalt springen

MemCnv

obj -> MemCnv(handle1, int2) : int

Ausführbar von Clients mit grafischer Oberfläche Ausführbar vom Server Ausführbar von Clients mit Programmierschnittstelle Ausführbar von der Web-Schnittstelle Ausführbar vom Druckprozessor Ausführbar von der ODBC-Schnittstelle Ausführbar vom SOA-Service

Memory -Objekt konvertieren

Details

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.