Zeichenkette suchen
FIND_AFTER_POS sucht in der ersten Eingangszeichenfolge IN1 ab der Startposition P nach der zweiten Eingangszeichenfolge IN2 und gibt die Position aus, an der die zweite Eingangszeichenfolge gefunden wurde. Das Ergebnis wird in die Ausgangsvariable geschrieben. Wenn die zweite Eingangszeichenfolge in der ersten Eingangszeichenfolge nicht vorkommt, wird der Wert 0 ausgegeben.
Eingang
Eingangszeichenfolge
zwischen Groß- und Kleinschreibung unterscheidende Zeichenfolge, nach der in der Eingangszeichenfolge gesucht wird
Startposition der zu suchenden Eingangszeichenfolge, wobei 1 das erste Zeichen der Zeichenfolge kennzeichnet.
Ausgang
Position, an der die gesuchte Zeichenfolge gefunden wurde
wenn Wert > 0: Position, an der die gesuchte Zeichenfolge herausgefunden wird, wobei sich 1 auf das erste Zeichen bezieht
wenn Wert = 0: Zeichenfolge nicht herausgefunden
Wenn Sie diesen Befehl mit UTF-8-Zeichenfolgen verwenden, beachten Sie die Hinweise zu UTF-8-Zeichenfolgen unter dem Datentyp STRING.
Wenn die Zeichenfolgen länger sind als die, die für die Länge der Eingangsvariablen (IN1 und IN2) im Feld Typ definiert sind, tritt ein Fehler auf (siehe sys_bIsCarry zur Fehlerauswertung).
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
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
bStart: BOOL:=FALSE;
sInputString: STRING[32]:='A better life. A better world.';
sSearchString: STRING[32]:='A';
iStartPos: INT:=8;
iFoundPos: INT:=0;
END_VAR
In diesem Beispiel wurden die Eingangsvariablen sSearchString und sInputString deklariert. Stattdessen können Sie die Zeichenfolge auch direkt an den Eingang der Funktion schreiben. Die Zeichenfolge müssen im POE-Kopf und in der Funktion in Apostrophen stehen.
sSearchString wird in sInputString ab Startposition 8 gesucht. Die Position des ersten Vorkommens nach Position 8 wird in iFoundPos geschrieben.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_F,E_FIND_AFTER_POS!,,19,1,28,7,,?DEN?DIN1?DIN2?DP?AENO?C);
B(B_VARIN,,sInputString,17,3,19,5,);
B(B_VARIN,,sSearchString,17,4,19,6,);
B(B_VARIN,,iStartPos,17,5,19,7,);
B(B_VAROUT,,iFoundPos,28,3,30,5,);
B(B_CONTACT,,bStart,13,2,15,4,);
L(1,3,13,3);
L(15,3,19,3);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF bStart then
iFoundPos:= FIND_AFTER_POS(sInputString, sSearchString);
END_IF;