MID

Copier les caractères à partir d’une position centrale

MID copie L caractères de la chaîne de caractères de la variable d’entrée IN, en commençant par la position P, 1 désignant la position du premier caractère de la chaîne de caractères. Le résultat est écrit dans la variable de sortie.

Paramètres

Entrée

IN (STRING)

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

L (INT)

Nombre de caractères de la chaîne de caractères d’entrée qui sont copiés

P (INT)

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

Sortie

Unnamed output (STRING)

Chaîne de caractères copié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”.

  • La somme de la position de départ et du nombre de caractères devant être copiés, ne doit pas être supérieure à la chaîne de caractères d’entrée. Si par exemple vous souhaitez que 5 caractères d’une chaîne de caractères de 10 caractères soient renvoyées à partir de la position 7, seuls les 4 derniers caractères seront copiés.

  • Si la chaîne de caractères de sortie est d’une longueur supérieure à celle définie pour la variable de sortie dans la zone Type, seul le nombre de caractères pouvant être contenu dans la variable de sortie sera copié.La variable système sys_bIsCarry est activée.

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.

sys_bIsCarry (passe à TRUE pendant un cycle)

Si la chaîne de caractères de sortie est d’une longueur supérieure à celle définie pour la variable de sortie dans la zone "Type"

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

Dans cet exemple, les variables d’entrée (sInputString, iNumberOfCharacters et iStartPos) ont été déclarées. Vous pouvez également entrer la chaîne de caractères, le nombre de caractères devant être copiés et la position de départ directement dans la fonction. La chaîne de caractères doit être entrée entre guillemets, à la fois dans l’en-tête du POU et dans la fonction.

Corps du POU

iNumberOfCharacters (15) désigne le nombre de caractères de sInputString qui sont copiés à partir de la position iStartPos (16) en sortie sResultString.

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 := 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

Corps en ST

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

Corps en IL

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