FIND_AFTER_POS

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.

Parameter

Eingang

IN1 (STRING)

Eingangszeichenfolge

IN2 (STRING)

zwischen Groß- und Kleinschreibung unterscheidende Zeichenfolge, nach der in der Eingangszeichenfolge gesucht wird

P (INT)

Startposition der zu suchenden Eingangszeichenfolge, wobei 1 das erste Zeichen der Zeichenfolge kennzeichnet.

Ausgang

Unnamed output (INT)

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

Anmerkungen

  • 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).

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)

wenn eine am Eingang oder Ausgang angegebene Zeichenfolge eine ungültige Zeichenfolge ist

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)

wenn eine am Eingang oder Ausgang angegebene Zeichenfolge eine ungültige Zeichenfolge ist

Beispiel

POE-Kopf

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.

POE-Rumpf

sSearchString wird in sInputString ab Startposition 8 gesucht. Die Position des ersten Vorkommens nach Position 8 wird in iFoundPos geschrieben.

KOP-Rumpf

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

ST-Rumpf

IF bStart then
    iFoundPos:= FIND_AFTER_POS(sInputString, sSearchString);
END_IF;

AWL-Rumpf

Letzte Änderung: 2024-04-02Feedback zu dieser SeitePanasonic Hotline