La soluzione è utilizzare le regular expressions (o espressioni regolari), che sono uno strumento potentissimo per cercare, verificare o manipolare testo usando dei modelli (pattern).
Vediamo come realizzare un semplice programma che soddisfi le tue necessità:
VAR
SStr : STRING[ 32 ]; (* Source string *)
DStr : STRING[ 32 ]; (* Destination string *)
Ok : BOOL;
END_VAR
eTO_JUNK(SysVsscanf(ADR(SStr), ADR('%32[0-9a-zA-Z]'), STRING_TYPE, ADR(DStr)));
Ok:=(SStr = DStr);
In SStr si trova la stringa da controllare, la funzione SysVsscanf la scansiona accettando tutti i caratteri che soddisfano la definizione racchiusa tra parentesi quadre fino ad un massimo di 32 caratteri e memorizza il risultato in DStr. Se la stringa risultato è uguale alla stringa sorgente il valore è corretto, si attiva la varioabile Ok. Si possono definire d iversi pattern di controllo:
eTO_JUNK(SysVsscanf(ADR(SStr), ADR('%32[a-zA-Z]'), STRING_TYPE, ADR(DStr))); //Caratteri alfabetici (Maiuscoli/Minuscoli)
eTO_JUNK(SysVsscanf(ADR(SStr), ADR('%32[a-zA-Z ]'), STRING_TYPE, ADR(DStr))); //Caratteri alfabetici (Maiuscoli/Minuscoli) e space
eTO_JUNK(SysVsscanf(ADR(SStr), ADR('%32[a-z]'), STRING_TYPE, ADR(DStr))); //Caratteri alfabetici (Minuscoli)
eTO_JUNK(SysVsscanf(ADR(SStr), ADR('%32[0-9]'), STRING_TYPE, ADR(DStr))); //Solo numeri