DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Syntaxe WLangage / Opérateurs
  • 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
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Présentation
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.
Détail

É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 :
Indexation mémo
WEBDEV - Code Navigateur La comparaison tient compte des caractères accentués minuscules en code Navigateur.
WEBDEV - Code Navigateur L'opérateur "Égalité très souple" n'est pas disponible en code Navigateur.
"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.
Pour plus de détails sur la gestion de l'Unicode, consultez WINDEV et l'Unicode.
WEBDEV - Code ServeurWindowsLinuxPHP

Comparaison d'instances de structures et d'instances de classes

Les structures dynamiques sont instanciées uniquement lors de leur allocation.
Il est possible de comparer des instances de structures dynamiques (ou des instances de classes dynamiques) grâce à l'opérateur "=".
Exemple :
// Déclaration de structures
O est une ST1
P est une ST2
 
// Déclaration et instanciation de structures dynamiques
P1 est une Structure ST1 dynamique
P1 = O
P2 est une Structure ST2 dynamique
P2 = O
 
// Comparaison
SI P1 = P2 ALORS ...
La même opération peut être réalisée sur les instances de classes, afin de savoir si deux variables désignent une unique instance de classe.
La comparaison du contenu de deux instances différentes d'une classe peut être faite en utilisant des buffers.
Exemple :
Objet1 est un Classe1 dynamique
Objet2 est un Classe1 dynamique
BufferObjet1, BufferObjet2 sont des Buffers
 
Objet1 = allouer un Classe1
Objet2 = allouer un Classe1
 
Sérialise(Objet1, BufferObjet1, psdBinaire)
Sérialise(Objet2, BufferObjet2, psdBinaire)
 
SI BufferObjet1 = BufferObjet2 ALORS
// Vrai si les deux instances ont des contenus identiques
SINON
// Faux si au moins un membre diffère
FIN

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))

Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Intervalle de comparaison (Entre 2 Valeurs)
Valeur1<X<Valeur2 : strictement compris entre les bornes exclues.
Valeur1<=X<=Valeur2 : compris entre les bornes incluses.
Valeur1<X<=Valeur2 ou Valeur1<=X<Valeur2 : compris entre, avec la borne inférieure exclue puis avec la borne supérieure exclue.

// si PosX >= xDesdeHasta.Desde _ET_ PosX <= xDesdeHasta.Hasta ALORS SORTIR
SI xDesdeHasta.Desde <= PosX <= xDesdeHasta.Hasta ALORS SORTIR
AntonioDev
13 mai 2023

Dernière modification : 14/06/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale