Zeichen ab Position
MID kopiert L Zeichen der Zeichenfolge am Eingang IN ab der Position P, wobei 1 das erste Zeichen der Zeichenfolge kennzeichnet. Das Ergebnis wird in die Ausgangsvariable geschrieben.
Eingang
Eingangszeichenfolge
Anzahl der zu kopierenden Zeichen der Eingangszeichenfolge
Startposition der zu kopierenden Eingangszeichenfolge, wobei 1 das erste Zeichen der Zeichenfolge kennzeichnet.
Ausgang
Kopierte Zeichenfolge
Wenn Sie diesen Befehl mit UTF-8-Zeichenfolgen verwenden, beachten Sie die Hinweise zu UTF-8-Zeichenfolgen unter dem Datentyp STRING.
Die Summe aus Startposition und Anzahl zu liefernder Zeichen sollte nicht größer sein als die Eingangszeichenfolge. Wenn z.B. aus einer 10 Zeichen langen Zeichenfolge 5 Zeichen ab der Position 7 geliefert werden sollen, erhalten Sie nur die letzten 4 Zeichen.
Wenn die Ausgangs-Zeichenfolge länger ist als die für die Ausgangsvariable im Feld Typ definierte Länge, werden nur so viele Zeichen kopiert, wie in die Ausgangsvariable passen.Die Systemvariable sys_bIsCarry wird gesetzt.
wenn eine am Eingang oder Ausgang angegebene Zeichenfolge eine ungültige Zeichenfolge ist
wenn eine am Eingang oder Ausgang angegebene Zeichenfolge eine ungültige Zeichenfolge ist
wenn die Ausgangs-Zeichenfolge länger ist als die für die Ausgangsvariable im Feld "Typ" definierte Länge
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR
sInputString: STRING[32]:='A better life. A better world.';
(*sample string*)
iNumberOfCharacters: INT:=15;
(*characters to be delivered*)
iStartPos: INT:=16;
(*position to start copying*)
sResultString: STRING[15]:='';
(*result here: 'A better world.'*)
END_VAR
In diesem Beispiel wurden die Eingangsvariablen (sInputString, iNumberOfCharacters und iStartPos) deklariert. Stattdessen können Sie die Zeichenfolge, die Anzahl der zu liefernden Zeichen und die Startposition auch direkt an die Eingänge der Funktion schreiben. Die Zeichenfolge muss im POE-Kopf und an den Funktionseingängen in Apostrophen stehen.
Ausgehend von der Variable iStartPos (16) wird die mit iNumberOfCharacters festgelegte Anzahl Zeichen (15) von der Eingangsvariablen sInputString in die Ausgangsvariable sResultString kopiert.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,MID!,,22,0,27,5,,?DIN?DL?DP?C);
B(B_VARIN,,sInputString,20,1,22,3,);
B(B_VARIN,,iNumberOfCharacters,20,2,22,4,);
B(B_VARIN,,iStartPos,20,3,22,5,);
B(B_VAROUT,,sResultString,27,1,29,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
sResultString:=MID(IN:=sInputString, L:=iNumberOfCharacters, P:=iStartPos);