Trova la posizione della stringa
FIND restituisce la posizione in cui la seconda stringa di ingresso appare per la prima volta nella prima stringa di ingresso. Il risultato viene scritto nella variabile di uscita. Se la seconda stringa di ingresso non appare nella prima stringa di ingresso, viene restituito il valore ZERO.
Ingresso
Stringa di ingresso
Stringa con differenza tra maiuscole e minuscole ricercata nella stringa di ingresso
Uscita
se il valore è > 0: posizione nella quale viene trovata la stringa ricercata, in cui 1 si riferisce al primo carattere
se il valore è = 0: stringa di ricerca non trovata
Se questa istruzione è utilizzata con stringhe UTF-8, fare riferimento alle note relative alle stringhe UTF-8 sotto il tipo di dati STRING.
Se la lunghezza delle stringhe supera la lunghezza definita per le variabili di ingresso (IN1 e IN2) nel campo di dichiarazione “Tipo”, si verifica un errore (vedere sys_bIsCarry per la gestione dell'errore).
se una stringa applicata in ingresso o in uscita è una stringa non valida
se la lunghezza delle stringhe di ingresso supera la lunghezza definita per le variabili di ingresso nel campo “Tipo”
se una stringa applicata in ingresso o in uscita è una stringa non valida
se la lunghezza delle stringhe di ingresso supera la lunghezza definita per le variabili di ingresso nel campo “Tipo”
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
VAR
sInputString: STRING[5]:='ABCBC';
(*sample string*)
sSearchString: STRING[2]:='BC';
(*searched string*)
iFoundPos: INT:=0;
(*1st position found*)
END_VAR
In questo esempio sono state dichiarate le variabili di ingresso (sInputString e sSearchString). Al loro posto potete inserire le stringhe ('ABCBC.' e 'BC') direttamente nella funzione. Le stringhe devono essere inserite tra virgolette, sia nell'intestazione del POU sia nella funzione.
sSearchString ('BC’) viene ricercata in sInputString ('ABCBC’). La posizione della prima occorrenza (2) viene scritta in iFoundPos.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_VARIN,,sInputString,18,1,20,3,);
B(B_VARIN,,sSearchString,18,2,20,4,);
B(B_VAROUT,,iFoundPos,25,1,27,3,);
B(B_F,FIND!,,20,0,25,4,,?DIN1?DIN2?C);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
END_BODY
iFoundPos := FIND(sInputString, sSearchString);
LD |
sInputString |
FIND |
sSearchString |
ST |
iFoundPos |