-

Besonderheiten von STRING_TO_BUF / WSTRING_TO_BUF

Das Verhalten des FBs für den Datentyp STRING/WSTRING unterscheidet sich vom Verhalten für die anderen Datentypen. Wenn Sie eine Zeichenfolge mit dem Parameter BUFFER verbinden, wird vorausgesetzt, dass diese Zeichenfolge ein Laufzeitsystem-formatierter String mit einem 4 Byte großen Header und einem abschließenden Null-Zeichen ist (siehe nachfolgenden Hinweis). Falls eine Formatumwandlung (Little-/Big-Endian) stattgefunden hat, wird dieser Header konvertiert. Wenn Sie jedoch Variablen anderer Datentypen (wie z.B. ein Feld mit BYTE- oder WORD-Elementen) mit dem Parameter BUFFER verbinden, werden diese im Fall einer STRING-Variablen als Einzelbyte-String bzw. im Fall einer WSTRING-Variablen als UTF16-String jeweils ohne Header erkannt. Diese Zeichenfolgen müssen ebenfalls mit einer Null abgeschlossen werden.

Hinweis
In einem STRING wird jedes Zeichen durch ein Byte und in einem WSTRING durch zwei Bytes oder, in bestimmten Sprachen, durch vier Bytes repräsentiert.

Hinweis
Es ist nicht erlaubt, die Datentypen STRING und WSTRING an den Parametern SRC/BUFFER zu mischen.

Die durch den Parameter BUF_CNT festgelegte zu kopierende Größe für den Datentyp STRING/WSTRING ist auf 32767 Bytes begrenzt (dies ist die maximal erlaubte STRING-Länge). Im Falle eines größeren Wertes, wird ERROR auf TRUE und STATUS auf 10 gesetzt.

Wenn der Quell-STRING/WSTRING weniger Zeichen hat als vom Parameter BUF_CNT gefordert, werden nur die vorhandenen Zeichen in das Ziel kopiert und der Rest des Ziels mit Nullen aufgefüllt. An das Ende der kopierten Zeichen wird jedes Mal ein abschließendes Null-Zeichen gesetzt.

Wenn der Byte-Strom des Ziels kein STRING/WSTRING ist, besteht der benötigte freie Speicher des Ziels aus den zu kopierenden Bytes, dem Offset des Ziels und dem abschließenden Null-Zeichen. Wenn der Zielbereich kleiner ist als notwendig, wird ERROR auf TRUE und STATUS auf 7 gesetzt.

Wenn der Ziel-Bytestrom ein STRING/WSTRING ist, besteht der benötigte freie Speicher des Ziels aus den kopierten Bytes, dem Offset des Ziels, der Größe des String-Headers und dem abschließenden Null-Zeichen. Wenn der Zielbereich kleiner ist als notwendig, wird ERROR auf TRUE und STATUS auf 7 gesetzt.