PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • 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/iPadApple WatchUniversal Windows 10 AppWindows Mobile
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 : [=
  • Versions 16 et supérieures
    Commence par : [~ (ignore les espaces en début de chaîne et la casse).
    AndroidJava Non supporté.
    Nouveauté 16
    Commence par : [~ (ignore les espaces en début de chaîne et la casse).
    AndroidJava Non supporté.
    Commence par : [~ (ignore les espaces en début de chaîne et la casse).
    AndroidJava Non supporté.
  • Versions 16 et supérieures
    Commence par : [~~ (ignore tous les espaces, la ponctuation et la casse).
    AndroidJava Non supporté.
    Nouveauté 16
    Commence par : [~~ (ignore tous les espaces, la ponctuation et la casse).
    AndroidJava Non supporté.
    Commence par : [~~ (ignore tous les espaces, la ponctuation et la casse).
    AndroidJava Non supporté.
  • Comparaison à une liste de valeurs : DANS
  • Versions 19 et supérieures
    Contient : [=]
    AndroidJava Non supporté.
    Nouveauté 19
    Contient : [=]
    AndroidJava Non supporté.
    Contient : [=]
    AndroidJava Non supporté.
  • Versions 19 et supérieures
    Contient : [~] (ignore la casse et les espaces situés en début et en fin de chaîne).
    AndroidJava Non supporté.
    Nouveauté 19
    Contient : [~] (ignore la casse et les espaces situés en début et en fin de chaîne).
    AndroidJava Non supporté.
    Contient : [~] (ignore la casse et les espaces situés en début et en fin de chaîne).
    AndroidJava Non supporté.
  • Versions 19 et supérieures
    Contient : [~~] (ignore tous les espaces, la ponctuation et la casse)
    AndroidJava Non supporté.
    Nouveauté 19
    Contient : [~~] (ignore tous les espaces, la ponctuation et la casse)
    AndroidJava Non supporté.
    Contient : [~~] (ignore tous les espaces, la ponctuation et la casse)
    AndroidJava Non supporté.
  • Versions 19 et supérieures
    Termine par : =]
    AndroidJava Non supporté.
    Nouveauté 19
    Termine par : =]
    AndroidJava Non supporté.
    Termine par : =]
    AndroidJava Non supporté.
  • Versions 19 et supérieures
    Termine par : ~] (ignore les espaces en fin de chaîne et la casse)
    AndroidJava Non supporté.
    Nouveauté 19
    Termine par : ~] (ignore les espaces en fin de chaîne et la casse)
    AndroidJava Non supporté.
    Termine par : ~] (ignore les espaces en fin de chaîne et la casse)
    AndroidJava Non supporté.
  • Versions 19 et supérieures
    Termine par : ~~] (ignore les espaces, la ponctuation et la casse)
    AndroidJava Non supporté.
    Nouveauté 19
    Termine par : ~~] (ignore les espaces, la ponctuation et la casse)
    AndroidJava Non supporté.
    Termine par : ~~] (ignore les espaces, la ponctuation et la casse)
    AndroidJava Non supporté.
Intervalle de comparaison
  • Strictement compris entre : < < (et inversement)
  • Compris entre : < <= et <= < (et inversement)
  • Compris entre (bornes comprises) : <= <= (et inversement)
  • 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.
Versions 16 et supérieures
WINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible pour les applications Windows Phone.
Nouveauté 16
WINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible pour les applications Windows Phone.
WINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible pour les applications Windows Phone.
Versions 17 et supérieures
WINDEV MobileiPhone/iPad Cette fonctionnalité est disponible pour les applications iPhone/iPad.
Nouveauté 17
WINDEV MobileiPhone/iPad Cette fonctionnalité est disponible pour les applications iPhone/iPad.
WINDEV MobileiPhone/iPad Cette fonctionnalité est disponible pour les applications iPhone/iPad.
Versions 18 et supérieures
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Windows Store apps.
WINDEV MobileWidget Android Cette fonctionnalité est disponible en mode Widget Android.
Nouveauté 18
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Windows Store apps.
WINDEV MobileWidget Android Cette fonctionnalité est disponible en mode Widget Android.
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Windows Store apps.
WINDEV MobileWidget Android Cette fonctionnalité est disponible en mode Widget Android.
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 :
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. Ainsi, la ligne :
SI x>5 ET x<10 ALORS ...
peut être remplacée par :
SI 5<x<10 ALORS ...
La ligne :
SI x>=5 ET x<=10 ALORS ...
peut être remplacée par :
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 A 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
  • Versions 16 et supérieures
    "[~" : Commence par en ignorant les caractères les espaces en début de chaîne et en ignorant la casse.
    Nouveauté 16
    "[~" : Commence par en ignorant les caractères les espaces en début de chaîne et en ignorant la casse.
    "[~" : Commence par en ignorant les caractères les espaces en début de chaîne et en ignorant la casse.
  • Versions 16 et supérieures
    "[~~" : Commence par en ignorant tous les espaces, les caractères de ponctuation et la casse.
    Nouveauté 16
    "[~~" : Commence par en ignorant tous les espaces, les caractères de ponctuation et la casse.
    "[~~" : Commence par en ignorant tous les espaces, les caractères de ponctuation et la casse.
  • Versions 19 et supérieures
    Contient : [=]
    Nouveauté 19
    Contient : [=]
    Contient : [=]
  • Versions 19 et supérieures
    Contient : [~] : Contient en ignorant la casse.
    Nouveauté 19
    Contient : [~] : Contient en ignorant la casse.
    Contient : [~] : Contient en ignorant la casse.
  • Versions 19 et supérieures
    Contient : [~~] : Contient en ignorant tous les espaces, les caractères de ponctuation et la casse.
    Nouveauté 19
    Contient : [~~] : Contient en ignorant tous les espaces, les caractères de ponctuation et la casse.
    Contient : [~~] : Contient en ignorant tous les espaces, les caractères de ponctuation et la casse.
  • Versions 19 et supérieures
    Termine par : =]
    Nouveauté 19
    Termine par : =]
    Termine par : =]
  • Versions 19 et supérieures
    Termine par : ~] : Termine par en ignorant les espaces en fin de chaîne et en ignorant la casse.
    Nouveauté 19
    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 en fin de chaîne et en ignorant la casse.
  • Versions 19 et supérieures
    Termine par : ~~] : Termine par en ignorant les espaces, la ponctuation et la casse.
    Nouveauté 19
    Termine par : ~~] : Termine par en ignorant les espaces, la ponctuation et 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.
WINDEVWEBDEV - Code ServeurWINDEV MobileEtats et RequêtesWindowsLinuxAndroidWidget AndroidiPhone/iPadApple WatchWindows MobileUniversal Windows 10 AppJavaPHPCode Utilisateur (MCU)

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.
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.
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
Cliquez sur [Ajouter] pour publier un commentaire