FIND_AFTER_POS

Buscar la posición de la cadena

FIND_AFTER_POS devuelve la posición de la cadena en la primera entrada IN1, comenzando en la posición P, en la que se encuentra la cadena de la segunda entrada IN2. El resultado se guarda en la variable de salida. Si no se encuentra la segunda cadena, el resultado será CERO.

Parámetros

Entrada

IN1 (STRING)

Primera cadena

IN2 (STRING)

Cadena que distingue entre mayúsculas y minúsculas y que se busca en la cadena de entrada

P (INT)

Posición inicial de la cadena de entrada que se va a buscar, donde 1 es el primer carácter de la cadena

Salida

Unnamed output (INT)

Posición donde empieza la cadena encontrada

  • si el valor > 0: posición en la que se encuentra la cadena buscada, donde 1 hace referencia al primer carácter

  • si el valor = 0: cadena de búsqueda no encontrada

Observaciones

  • Si esta instrucción se utiliza con caracteres UTF-8, consultar las notas relativas a los caracteres UTF-8 en el tipo de datos STRING.

  • Si las cadenas son más largas que la longitud definida para las variables de entrada (IN1 y IN2) en el campo Tipo, se genera un error (para corregir el error, consultar sys_bIsCarry).

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)

si una cadena aplicada en la entrada o la salida es una cadena no válida.

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)

si una cadena aplicada en la entrada o la salida es una cadena no válida.

Ejemplo

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

	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

En este ejemplo se han declarado las variables de entrada sSearchString y sInputString. También se puede introducir las cadenas directamente en la función. Las cadenas de caracteres deben ir entre comillas simples, tanto en la cabecera de la POU como en la función.

Cuerpo de la POU

Se busca sSearchString en sInputString a partir de la posición 8. En iFoundPos se escribe la posición de la primera ocurrencia después la posición 8.

Cuerpo 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

Cuerpo en ST

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

Cuerpo IL

Modificado el: 2024-04-02Comentarios sobre esta páginaLínea directa de Panasonic