Version 6.7 (Geändert)
BLOB to text (Blob; TextFormat{; Offset{; TextLänge}}) Text
Parameter | Typ | Beschreibung | |
Blob | BLOB | BLOB zum Entnehmen des Textwertes | |
TextFormat | Numerisch | 0 C String | |
1 Pascal String | |||
2 Text mit Länge | |||
3 Text ohne Länge | |||
Offset | Variable | Versatz im BLOB (in Bytes) | |
Neuer Versatz nach dem Lesen | |||
TextLänge | Numerisch | Anzahl der zu lesenden Zeichen | |
Funktionsergebnis | Text | Textwert |
Beschreibung
Die Funktion BLOB to text gibt einen aus Blob gelesenen Textwert zurück. Der Parameter TextFormat legt das interne Format des zu schreibenden Wertes vom Typ Text fest. Übergeben Sie eine der folgenden vordefinierten Konstanten, die 4th Dimension bietet:
Konstante | Typ | Wert |
C string | Lange Ganzzahl | 0 |
Pascal string | Lange Ganzzahl | 1 |
Text with length | Lange Ganzzahl | 2 |
Text without length | Lange Ganzzahl | 3 |
Die verschiedenen Formate werden im folgenden beschrieben:
Textformat | Beschreibung und Beispiele |
C String | Der Text endet mit dem Zeichen NUL (ASCII Code $00) |
"" $00 | |
"Hello World!" $48 65 6C 6C 6F 20 57 6F 72 6C 64 21 00 | |
Pascal String | Dem Text ist eine 1-Byte Länge vorangestellt |
"" $00 | |
"Hello World!" $0C 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 | |
Text mit Länge | Dem Text ist eine 2-Byte Länge vorangestellt |
"" $00 00 | |
"Hello World!" $00 0C 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 | |
Text ohne Länge | Der Text besteht nur aus seinen Zeichen |
"" Keine Daten | |
"Hello World!" $48 65 6C 6C 6F 20 57 6F 72 6C 64 21 |
Warnung: Die Anzahl der zu lesenden Zeichen wird durch den Parameter TextFormat festgelegt, mit Ausnahme des Formates Text ohne Länge. Dafür müssen Sie im Parameter TextLänge die Anzahl der Zeichen festlegen. Dieser Parameter wird für die anderen Formate ignoriert. Sie müssen keinen Wert eintragen.
Zur Erinnerung: Eine Textvariable kann bis zu 32.000 Zeichen enthalten, eine Stringvariable bis zu der Anzahl, die beim Deklarieren festgelegt wurde (max. 255 Zeichen). Versuchen Sie mehr Daten zu lesen, als die Variable aufnehmen kann, schneidet 4D das Ergebnis des Befehles beim Einsetzen in die Variable ab.
Geben Sie den optionalen Parameter Offset an, wird der Textwert im BLOB am Versatz gelesen (beginnend bei Null). Geben Sie den optionalen Variablenparameter Offset nicht an, wird der Anfang des Blob gemäß dem in TextFormat übergebenen Wert gelesen. Beachten Sie, daß Sie beim Lesen von Text ohne Länge den Variablenparameter Offset übergeben müssen.
Hinweis: Übergeben Sie als Versatz einen Wert (in Bytes) zwischen 0 (Null) und der BLOB-Größe minus der zu lesenden Textgröße. Andernfalls ist das Funktionsergebnis nicht vorhersehbar.
Nach dem Aufruf wird die Variable um die Anzahl der gelesenen Bytes erhöht. Von daher können Sie dieselbe Variable mit einem anderen BLOB Befehl zum Schreiben eines anderen Wertes verwenden.
Beispiel
Folgendes Beispiel liest eine hypothetische MacOS Ressource, deren internes Format mit den 'STR#' Ressourcen identisch ist:
GET RESOURCE ("ABCD";viResID;vxResData;viMyResFile) vlSize:=BLOB size(vxResData) If (vlSize>0) ` Die Ressource beginnt mit einer 2-byte Zahl für die Anzahl der Strings vlOffset:=0 viNbEntries:=BLOB to integer(vxResData;Macintosh Byte Ordering;vlOffset) ` Die Ressource enthält dann verkettete und ungefüllte Pascal Strings For (viEntry;1;viNbEntries) If (vlOffset<vlSize) vsEntry:=BLOB to text(vxResData;Pascal string;vlOffset) ` Führe etwas aus mit vsEntry Else ` Ressource data ist ungültig, verlasse die Schleife viEntry:=viNbEntries+1 End if End for End if
Referenz
BLOB to integer, BLOB to longint, BLOB to real, INTEGER TO BLOB, LONGINT TO BLOB, REAL TO BLOB, TEXT TO BLOB.