MID

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.

Parameter

Eingang

IN (STRING)

Eingangszeichenfolge

L (INT)

Anzahl der zu kopierenden Zeichen der Eingangszeichenfolge

P (INT)

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

Ausgang

Unnamed output (STRING)

Kopierte Zeichenfolge

Anmerkungen

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

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

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

wenn die Ausgangs-Zeichenfolge länger ist als die für die Ausgangsvariable im Feld "Typ" definierte Länge

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

POE-Rumpf

Ausgehend von der Variable iStartPos (16) wird die mit iNumberOfCharacters festgelegte Anzahl Zeichen (15) von der Eingangsvariablen sInputString in die Ausgangsvariable sResultString kopiert.

KOP-Rumpf

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

ST-Rumpf

sResultString:=MID(IN:=sInputString, L:=iNumberOfCharacters, P:=iStartPos);

AWL-Rumpf

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