|
|
|
|
|
- Présentation
- Détail
- Égalité souple et égalité très souple
- Egalité et comparaison : Réel contenant plus de 6 décimales de différence
- Intervalles de comparaison
- Opérateurs de comparaison et UNICODE
- Comparaison d'instances de structures et d'instances de classes
- Opérateur DANS
Opérateurs de comparaison
Les opérateurs de comparaison peuvent être divisés en plusieurs catégories : | | Egalité | - Egalité stricte : =
- Egalité souple : ~=
- Egalité très souple : ~~
- Commence par : [=
| Comparaison | - Différent : <>
- Inférieur ou égal : <=
- Supérieur ou égal : >=
- Strictement inférieur : <
- Strictement supérieur : >
- Commence par : [=
- Commence par : [~ (ignore les espaces en début de chaîne et la casse).
- Commence par : [~~ (ignore tous les espaces, la ponctuation et la casse).
- Comparaison à une liste de valeurs : DANS
- Contient : [=]
- Contient : [~] (ignore la casse et les espaces situés en début et en fin de chaîne).
- Contient : [~~] (ignore tous les espaces, la ponctuation et la casse)
- Termine par : =]
- Termine par : ~] (ignore les espaces en fin de chaîne et la casse)
- Termine par : ~~] (ignore les espaces, la ponctuation et la casse)
| Intervalle de comparaison | - Strictement compris entre : < .. < (et inversement)
Valeur1 < x < Valeur2 - Compris entre : < .. <= ET < .. = < (et inversement)
Valeur1 <= x ET x <= Valeur2 - Compris entre (bornes comprises) : <= <= (et inversement)
Valeur1 <= x <= Valeur2 - Compris entre (bornes comprises) : x A y
|
Les opérateurs de comparaison peuvent être utilisés avec tous les types d'opérandes. Le résultat d'une expression de comparaison est de type booléen. Égalité souple et égalité très souple L'égalité souple (~=) agit uniquement sur les chaînes de caractères (sauf les chaînes fixes). Cet opérateur permet de : - ne pas différencier les caractères majuscules des caractères minuscules,
- ne pas tenir compte des espaces situés avant et après la chaîne à tester,
- ne pas tenir compte des caractères accentués minuscules.
Pour en plus ne pas tenir compte des espaces, des ponctuations et des Retours Chariots (RC) à l'intérieur des chaînes, utilisez l'égalité très souple (~~). Équivalence HFSQL : Pour retrouver l'équivalence à l'égalité très souple lors d'une recherche sur une clé texte dans un fichier de données HFSQL, il est nécessaire de configurer les options suivantes lors de la description de la rubrique dans l'analyse :
"Dupond" = "DUPOND"         // Retourne Faux "Dupond" ~= "DUPOND"         // Retourne Vrai " Dupond" ~= "DUPOND"        // Retourne Vrai " Dupond" ~= "Dupond"        // Retourne Vrai "C'est l'été" ~= "C'est l'ete"   // Retourne Vrai "Ent. S.A.R.L" ~~ "Ent SARL"     // Retourne Vrai Egalité et comparaison : Réel contenant plus de 6 décimales de différence Le test d'égalité de deux réels est effectué en ne tenant compte que des 6 premières décimales. En effet, les erreurs d'arrondi dues au codage interne des réels nécessitent un test spécifique. Ce test doit être réalisé en comparant la différence des deux valeurs à tester avec une valeur de référence. Selon le type de votre application, cette valeur peut être égale à 0,00001 ou moins encore. Cette gestion d'arrondi n'est pas spécifique à WINDEV, WEBDEV et WINDEV Mobile. Elle est générale à tous les langages manipulant des réels sous forme binaire.
Diff, R1, R2 sont des réels Diff = 0.00001 SI Abs(1-(R1/R2)) < Diff ALORS // R1 et R2 sont égaux SINON // R1 et R2 sont différents FIN Intervalles de comparaison Les intervalles de comparaison permettent de simplifier l'écriture de comparaisons complexes. Quelques exemples de comparaisons identiques : - Exemple 1 :
- SI x>5 ET x<10 ALORS ...
- SI 5<x<10 ALORS ...
- Exemple 2 :
- SI x>=5 ET x<=10 ALORS ...
- SI x=5 A 10 ALORS ...
MonTableau est un tableau de 5 chaînes I est un entier MonTableau[1] = "Dupond" MonTableau[2] = "Aida" MonTableau[3] = "Parapoline" MonTableau[4] = "Moulin" MonTableau[5] = "Foolamour" POUR I = 1 À 5 SI "B" < MonTableau[I] <= "M" ALORS Trace(MonTableau[I]) // Affiche Dupond et Foolamour FIN Opérateurs de comparaison et UNICODE Les opérateurs disponibles sont : - "=" : Egalité stricte
- "<>" : Différence
- "[=" : Commence par
- "[~" : Commence par en ignorant les caractères les espaces en début de chaîne et en ignorant la casse.
- "[~~" : Commence par en ignorant tous les espaces, les caractères de ponctuation et la casse.
- Contient : [=]
- Contient : [~] : Contient en ignorant la casse.
- Contient : [~~] : Contient en ignorant tous les espaces, les caractères de ponctuation et la casse.
- Termine par : =]
- Termine par : ~] : Termine par en ignorant les espaces en fin de chaîne et en ignorant la casse.
- Termine par : ~~] : Termine par en ignorant les espaces, la ponctuation et la casse.
- "<", "<=", ">=", ">" : Strictement inférieur, inférieur ou égal, supérieur ou égal, strictement supérieur
Il est possible d'utiliser des chaînes ANSI, Unicode et des buffers dans les différents paramètres de la comparaison. La règle de conversion utilisée est la suivante pour les systèmes Ansi (Windows ou Linux) : - Si l'une au moins des chaînes est un buffer, toutes les chaînes sont converties en buffer, et l'opération est réalisée avec des buffers,
- Si la première condition n'est pas remplie, si l'une au moins des chaînes est Unicode, toutes les chaînes sont converties en Unicode et l'opération est réalisée en Unicode (si nécessaire, la conversion est réalisée avec l'alphabet courant),
- Sinon, l'opération est réalisée en Ansi.
La règle de conversion utilisée est la suivante pour les systèmes Unicode (Windows CE) : - Si l'une au moins des chaînes est un buffer, toutes les chaînes sont converties en buffers et l'opération est réalisée avec des buffers,
- Sinon, l'opération est réalisée en Unicode.
Opérateur DANS L'opérateur DANS permet de comparer une valeur à une liste de valeurs. Son évaluation renvoie un booléen. Exemple : MaValeur est un entier MonRésultat est un booléen MaValeur = 10 MonRésultat = (MaValeur DANS(1,4,6,10)) Dans la liste de valeurs, il est possible de placer des valeurs littérales ou des variables dont la valeur sera évaluée avant que la comparaison ne soit effectuée. Exemple :
MaValeur est un entier MonAutreValeur est un entier MonRésultat est un booléen MaValeur = 10 MonAutreValeur = 15 MonRésultat = (MaValeur DANS(1,4,6,10,MonAutreValeur))
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|