j'ai l'habitude d'utiliser cette procédure dans mon code.
Elle est pratique car elle simplifie énormément la recherche utilisateur
en ne tenant pas compte des accents et autres caractères inutiles dans une recherche textuelle.
C'est tout bête mais çà augmente considérablement les chances de
réussite. Cette fonction est très rapide et peut être utilisée avec d'assez gros textes.
La boucle While/Wend ne sert qu'à mapper/remplacer caractère après caractère.
Toute la subtilité est dans l'agencement des datas que vous pouvez remanier à votre convenance.
Code : Tout sélectionner
Procedure.s UCase2(string.s)
Protected *mask.CHARACTER, *str.CHARACTER = @string
While *str\c
*mask = ?CHARMASK + *str\c
*str\c = *mask\c
*str + 1
Wend
ProcedureReturn string
DataSection
CHARMASK:
Data.c 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
Data.c 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
Data.c 32,32,32,32,32,32,32,32,48,49,50,51,52,53,54,55,56,57,32,32
Data.c 32,32,32,32,32,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79
Data.c 80,81,82,83,84,85,86,87,88,89,90,32,32,32,32,32,32,65,66,67
Data.c 68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87
Data.c 88,89,90,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,83,32
Data.c 32,32,90,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,90,89
Data.c 32,73,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
Data.c 32,32,32,32,32,32,32,32,32,32,32,32,65,65,65,65,65,65,65,67
Data.c 69,69,69,69,73,73,73,73,68,78,79,79,79,79,79,32,79,85,85,85
Data.c 85,89,80,32,65,65,65,65,65,65,32,67,69,69,69,69,73,73,73,73
Data.c 32,78,79,79,79,79,79,32,32,85,85,85,85,89,32,89
EndDataSection
EndProcedure
Debug UCase2("Pürèbâsïç, Là pùIssañçÊ à l'étät pùr!")