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.
Entrée
Chaîne de caractères d’entrée
Chaîne de caractères sensible à la casse recherchée dans la chaîne de caractères d’entrée
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
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
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).
Si une chaîne de caractères en entrée ou sortie est invalide.
Si une chaîne de caractères en entrée ou sortie est invalide.
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.
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.
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;