FIND_AFTER_POS

Trouver la position de la chaîne de caractères

FIND_AFTER_POS renvoie la position à laquelle la seconde chaîne de caractères d’entrée IN2 apparaît dans la première chaîne de caractères d’entrée IN1 à partir de la position P. Le résultat est écrit dans la variable de sortie. Si la seconde chaîne de caractères n’apparaît pas dans la première chaîne de caractères d’entrée, la valeur ZÉRO est renvoyée.

Paramètres

Entrée

IN1 (STRING)

Chaîne de caractères d’entrée

IN2 (STRING)

Chaîne de caractères sensible à la casse recherchée dans la chaîne de caractères d’entrée

P (INT)

Position de départ de la chaîne de caractères d’entrée recherchée, 1 étant le premier caractère de la chaîne de caractères

Sortie

Unnamed output (INT)

Position à laquelle la chaîne de caractères est trouvée

  • Si la valeur > 0 : position à laquelle la chaîne de caractères est trouvée, 1 désignant la position du premier caractère

  • Si la valeur = 0 : chaine de caractères recherchée non trouvée

Remarques

  • Si cette instruction est utilisée avec des chaînes de caractères en UTF-8, consultez les remarques concernant les chaînes de caractères en UTF-8 sous “STRING”.

  • Si les chaînes de caractères sont d’une longueur supérieure à celle définie pour les variables d’entrée (IN1 et IN2) dans la zone Type, une erreur apparaît (voir sys_bIsCarry pour le traitement des erreurs).

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)

Si une chaîne de caractères en entrée ou sortie est invalide.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)

Si une chaîne de caractères en entrée ou sortie est invalide.

Exemple

En-tête du POU

Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.

	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

Dans cet exemple, les variables d’entrée sSearchString et sInputString ont été déclarées. Vous pouvez également entrer les chaînes de caractères directement dans la fonction. Les chaînes de caractères doivent être entrées entre guillemets, à la fois dans l’en-tête du POU et dans la fonction.

Corps du POU

sSearchString est recherchée dans sInputString à partir de la position 8. La position de la première occurrence après la position 8 est écrite dans iFoundPos.

Corps en LD

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

Corps en ST

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

Corps en IL

Modifié le : 2024-03-25Commentaires sur cette pageAssistance téléphonique