Questa funzione cerca la stringa Needle in Haystack , la ricerca è effettuata in base alla definizione di Mode. Se la stringa è trovata viene ritornato il puntatore all'indirizzo di Haystack dove si trova.

In base alla definizione di Mode può essere ritornato l'indirizzo del primo carattere coincidente oppure l'indirizzo del carattere successivo all'ultimo carattere coincidente. Se stringa non trovata o errore viene ritornato NULL.

Function
CODESYS: Non disponibile
LogicLab: eLLabXUnified12Lib

Haystack (@STRING) Pointer alla stringa dove effettuare la ricerca.

Needle (@STRING) Pointer alla stringa da ricercare.

Mode (FIND_MODE) Definizione modo in cui effettuare la ricerca (Vedi definizione).

La funzione ritorna un (@STRING) indirizzo di Haystack dove Needle è stata trovata, NULL se non trovata.

Errori

In caso di errore la funzione torna EOF, eseguendo immediatamente dopo la funzione SysGetLastError è possibile rilevare il codice di errore. Fare riferimento alla tabella seguente per la descrizione.

Esempi

Come utilizzare gli esempi.
Viene eseguita la ricerca della stringa 'World' nella stringa presente in Str che è valorizzata con 'HelloWorld!, helloworld!' con diversi modi di ricerca. Dal pointer ritornato viene sottratto l'indirizzo di allocazione di Str in modo da ottenere la posizione relativa della stringa trovata nella stringa di ricerca. Vediamo i vari risultati.

Position[0]: 5, La ricerca parte dall'inizio e ritorna la posizione di inizio della prima occorrenza.
Position[1]: 10, La ricerca parte dall'inizio e ritorna la posizione successiva alla fine della prima occorrenza.
Position[2]: 18, La ricerca parte dalla fine e ritorna la posizione di inizio della prima occorrenza.
Position[3]: 23, La ricerca parte dalla fine e ritorna la posizione successiva alla fine della prima occorrenza.

LogicLab (Ptp116)
PROGRAM ST_SysStrFind
VAR
    Position : ARRAY[ 0..3 ] OF UDINT; (* Found position *)
    Str : STRING[ 32 ] := 'HelloWorld!, helloworld!'; (* Source string *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SysStrFind"
// *****************************************************************************
// Some find examples.
// -----------------------------------------------------------------------------

    Position[0]:=SysStrFind(ADR(Str),ADR('World'), FIND_DEFAULT)-ADR(Str);
    Position[1]:=SysStrFind(ADR(Str),ADR('World'), FIND_GET_END)-ADR(Str);
    Position[2]:=SysStrFind(ADR(Str),ADR('World'), FIND_FROM_END OR FIND_NO_CASE)-ADR(Str);
    Position[3]:=SysStrFind(ADR(Str),ADR('World'), FIND_FROM_END OR FIND_GET_END OR FIND_NO_CASE)-ADR(Str);

// [End of file]

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 20 Settembre 2019