Un variant peux être une chaine ou un nombre, mais n'est pas définie
quand c'est null
Soit le code en WD11
b est un variant
ch est une chaine
b=null
ch=b
info(ch)
J'obtiens 0 et pas vide
Donc le variant qui est égal à null se transforme en chaine "0"
ce qui est très déroutant.
En cherchant plus loin, je me suis aperçu que c'est la transformation de
null qui pose un problème.
Car on a :
Le test de null=0 renvoie vrai
Le test de null=faux renvoie vrai
Le test de null="0" renvoie vrai
Le test de "0"=vrai renvoie vrai
Donc la windev me dit que faux=null="0"=vrai donc faux=vrai !!!
Cette illogisme m'a causé quelque bug dans mes programmes.
Le problème existe-t-il dans les versions supérieures de windev (12, 14) ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Romain PETIT
Après mure réflexion, Daireaux Jean-Baptiste a écrit :
Bonjour,
Bonjour,
Le test de null=0 renvoie vrai Le test de nullúux renvoie vrai Le test de null="0" renvoie vrai Le test de "0"=vrai renvoie vrai Donc la windev me dit que faux=null="0"=vrai donc faux=vrai !!!
Cette illogisme m'a causé quelque bug dans mes programmes. Le problème existe-t-il dans les versions supérieures de windev (12, 14) ?
Ca a l'air d'avoir été corrigé en 12 :
Trace(Null=0)// renvoie 1 (vrai)
mais attention : vVariant est un variant vVariant = 0 si vVariant = null alors // ne passe pas ici car vVariant est =0 (non null) fin
Trace(Nullúux)// erreur "Le type booléen ne peut pas être comparé à la valeur Null." Trace(Null="0")// renvoie 0 Trace("0"=Vrai)// renvoie 0
Ceci dit, je trouve très dangereux de travailler avec des variant, à mon sens il vaut toujours mieux faire des transformations de types explicites (NumériqueVersChaine, val...).
Après mure réflexion, Daireaux Jean-Baptiste a écrit :
Bonjour,
Bonjour,
Le test de null=0 renvoie vrai
Le test de nullúux renvoie vrai
Le test de null="0" renvoie vrai
Le test de "0"=vrai renvoie vrai
Donc la windev me dit que faux=null="0"=vrai donc faux=vrai !!!
Cette illogisme m'a causé quelque bug dans mes programmes.
Le problème existe-t-il dans les versions supérieures de windev (12, 14) ?
Ca a l'air d'avoir été corrigé en 12 :
Trace(Null=0)// renvoie 1 (vrai)
mais attention :
vVariant est un variant
vVariant = 0
si vVariant = null alors
// ne passe pas ici car vVariant est =0 (non null)
fin
Trace(Nullúux)// erreur "Le type booléen ne peut pas être comparé à
la valeur Null."
Trace(Null="0")// renvoie 0
Trace("0"=Vrai)// renvoie 0
Ceci dit, je trouve très dangereux de travailler avec des variant, à
mon sens il vaut toujours mieux faire des transformations de types
explicites (NumériqueVersChaine, val...).
A+
--
Romain PETIT
contact : http://cerbermail.com/?O16kfXOFcq
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Après mure réflexion, Daireaux Jean-Baptiste a écrit :
Bonjour,
Bonjour,
Le test de null=0 renvoie vrai Le test de nullúux renvoie vrai Le test de null="0" renvoie vrai Le test de "0"=vrai renvoie vrai Donc la windev me dit que faux=null="0"=vrai donc faux=vrai !!!
Cette illogisme m'a causé quelque bug dans mes programmes. Le problème existe-t-il dans les versions supérieures de windev (12, 14) ?
Ca a l'air d'avoir été corrigé en 12 :
Trace(Null=0)// renvoie 1 (vrai)
mais attention : vVariant est un variant vVariant = 0 si vVariant = null alors // ne passe pas ici car vVariant est =0 (non null) fin
Trace(Nullúux)// erreur "Le type booléen ne peut pas être comparé à la valeur Null." Trace(Null="0")// renvoie 0 Trace("0"=Vrai)// renvoie 0
Ceci dit, je trouve très dangereux de travailler avec des variant, à mon sens il vaut toujours mieux faire des transformations de types explicites (NumériqueVersChaine, val...).
Après mure réflexion, Daireaux Jean-Baptiste a écrit :
Bonjour,
Bonjour,
Le test de null=0 renvoie vrai Le test de nullúux renvoie vrai Le test de null="0" renvoie vrai Le test de "0"=vrai renvoie vrai Donc la windev me dit que faux=null="0"=vrai donc faux=vrai !!!
Cette illogisme m'a causé quelque bug dans mes programmes. Le problème existe-t-il dans les versions supérieures de windev (12, 14) ?
Ca a l'air d'avoir été corrigé en 12 :
Trace(Null=0)// renvoie 1 (vrai)
mais attention : vVariant est un variant vVariant = 0 si vVariant = null alors // ne passe pas ici car vVariant est =0 (non null) fin
Trace(Nullúux)// erreur "Le type booléen ne peut pas être comparé à la valeur Null." Trace(Null="0")// renvoie 0 Trace("0"=Vrai)// renvoie 0
Ceci dit, je trouve très dangereux de travailler avec des variant, à mon sens il vaut toujours mieux faire des transformations de types explicites (NumériqueVersChaine, val...).
A+
Les test que j'effectue sont :
x est un <mettre le type voulue>
x=null si x alors info("x est convertie en vrai") sinon info("x est convertie en faux") fin
Romain PETIT a écrit :
Après mure réflexion, Daireaux Jean-Baptiste a écrit :
Bonjour,
Bonjour,
Le test de null=0 renvoie vrai
Le test de nullúux renvoie vrai
Le test de null="0" renvoie vrai
Le test de "0"=vrai renvoie vrai
Donc la windev me dit que faux=null="0"=vrai donc faux=vrai !!!
Cette illogisme m'a causé quelque bug dans mes programmes.
Le problème existe-t-il dans les versions supérieures de windev (12,
14) ?
Ca a l'air d'avoir été corrigé en 12 :
Trace(Null=0)// renvoie 1 (vrai)
mais attention :
vVariant est un variant
vVariant = 0
si vVariant = null alors
// ne passe pas ici car vVariant est =0 (non null)
fin
Trace(Nullúux)// erreur "Le type booléen ne peut pas être comparé à la
valeur Null."
Trace(Null="0")// renvoie 0
Trace("0"=Vrai)// renvoie 0
Ceci dit, je trouve très dangereux de travailler avec des variant, à mon
sens il vaut toujours mieux faire des transformations de types
explicites (NumériqueVersChaine, val...).
A+
Les test que j'effectue sont :
x est un <mettre le type voulue>
x=null
si x alors
info("x est convertie en vrai")
sinon
info("x est convertie en faux")
fin
Après mure réflexion, Daireaux Jean-Baptiste a écrit :
Bonjour,
Bonjour,
Le test de null=0 renvoie vrai Le test de nullúux renvoie vrai Le test de null="0" renvoie vrai Le test de "0"=vrai renvoie vrai Donc la windev me dit que faux=null="0"=vrai donc faux=vrai !!!
Cette illogisme m'a causé quelque bug dans mes programmes. Le problème existe-t-il dans les versions supérieures de windev (12, 14) ?
Ca a l'air d'avoir été corrigé en 12 :
Trace(Null=0)// renvoie 1 (vrai)
mais attention : vVariant est un variant vVariant = 0 si vVariant = null alors // ne passe pas ici car vVariant est =0 (non null) fin
Trace(Nullúux)// erreur "Le type booléen ne peut pas être comparé à la valeur Null." Trace(Null="0")// renvoie 0 Trace("0"=Vrai)// renvoie 0
Ceci dit, je trouve très dangereux de travailler avec des variant, à mon sens il vaut toujours mieux faire des transformations de types explicites (NumériqueVersChaine, val...).
A+
Les test que j'effectue sont :
x est un <mettre le type voulue>
x=null si x alors info("x est convertie en vrai") sinon info("x est convertie en faux") fin
Daireaux Jean-Baptiste
Daireaux Jean-Baptiste a écrit :
Romain PETIT a écrit :
Après mure réflexion, Daireaux Jean-Baptiste a écrit :
Bonjour,
Bonjour,
Le test de null=0 renvoie vrai Le test de nullúux renvoie vrai Le test de null="0" renvoie vrai Le test de "0"=vrai renvoie vrai Donc la windev me dit que faux=null="0"=vrai donc faux=vrai !!!
Cette illogisme m'a causé quelque bug dans mes programmes. Le problème existe-t-il dans les versions supérieures de windev (12, 14) ?
Ca a l'air d'avoir été corrigé en 12 :
Trace(Null=0)// renvoie 1 (vrai)
mais attention : vVariant est un variant vVariant = 0 si vVariant = null alors // ne passe pas ici car vVariant est =0 (non null) fin
Trace(Nullúux)// erreur "Le type booléen ne peut pas être comparé à la valeur Null." Trace(Null="0")// renvoie 0 Trace("0"=Vrai)// renvoie 0
Ceci dit, je trouve très dangereux de travailler avec des variant, à mon sens il vaut toujours mieux faire des transformations de types explicites (NumériqueVersChaine, val...).
A+
Les test que j'effectue sont :
x est un <mettre le type voulue>
x=null si x alors info("x est convertie en vrai") sinon info("x est convertie en faux") fin
Désolé j'ai été coupé ...
Mon problème est la cohérence du transtypage. Je fait de la programmation objet avec windev, je construit des outils pour me faire développer 10 fois plus vite (vraiment). Par exemple j'en avait marre de faire des tableaux dynamiques de structures dont il fallait suivre la taille à la main. Donc je me suis fait une classe liste. Dans cette liste je met des entier, des chaines, des trucs, des listes, ... J'ai un itérateur dessus et des fonctions d'accès indexé.
et quand j'écris :
ch est une chaine
ch=ma_liste:get(x) //accés à un zone vide. si ch="" alors //ne passe jammais la car null convertie en "0" fin
Bon mais si c'est corriger en Windev 12 alors je verrai lorsque l'on achètera WD 15 ou 16
Daireaux Jean-Baptiste a écrit :
Romain PETIT a écrit :
Après mure réflexion, Daireaux Jean-Baptiste a écrit :
Bonjour,
Bonjour,
Le test de null=0 renvoie vrai
Le test de nullúux renvoie vrai
Le test de null="0" renvoie vrai
Le test de "0"=vrai renvoie vrai
Donc la windev me dit que faux=null="0"=vrai donc faux=vrai !!!
Cette illogisme m'a causé quelque bug dans mes programmes.
Le problème existe-t-il dans les versions supérieures de windev (12,
14) ?
Ca a l'air d'avoir été corrigé en 12 :
Trace(Null=0)// renvoie 1 (vrai)
mais attention :
vVariant est un variant
vVariant = 0
si vVariant = null alors
// ne passe pas ici car vVariant est =0 (non null)
fin
Trace(Nullúux)// erreur "Le type booléen ne peut pas être comparé à
la valeur Null."
Trace(Null="0")// renvoie 0
Trace("0"=Vrai)// renvoie 0
Ceci dit, je trouve très dangereux de travailler avec des variant, à
mon sens il vaut toujours mieux faire des transformations de types
explicites (NumériqueVersChaine, val...).
A+
Les test que j'effectue sont :
x est un <mettre le type voulue>
x=null
si x alors
info("x est convertie en vrai")
sinon
info("x est convertie en faux")
fin
Désolé j'ai été coupé ...
Mon problème est la cohérence du transtypage.
Je fait de la programmation objet avec windev, je construit des outils
pour me faire développer 10 fois plus vite (vraiment). Par exemple j'en
avait marre de faire des tableaux dynamiques de structures dont il
fallait suivre la taille à la main.
Donc je me suis fait une classe liste. Dans cette liste je met des
entier, des chaines, des trucs, des listes, ...
J'ai un itérateur dessus et des fonctions d'accès indexé.
et quand j'écris :
ch est une chaine
ch=ma_liste:get(x) //accés à un zone vide.
si ch="" alors
//ne passe jammais la car null convertie en "0"
fin
Bon mais si c'est corriger en Windev 12 alors je verrai lorsque l'on
achètera WD 15 ou 16
Après mure réflexion, Daireaux Jean-Baptiste a écrit :
Bonjour,
Bonjour,
Le test de null=0 renvoie vrai Le test de nullúux renvoie vrai Le test de null="0" renvoie vrai Le test de "0"=vrai renvoie vrai Donc la windev me dit que faux=null="0"=vrai donc faux=vrai !!!
Cette illogisme m'a causé quelque bug dans mes programmes. Le problème existe-t-il dans les versions supérieures de windev (12, 14) ?
Ca a l'air d'avoir été corrigé en 12 :
Trace(Null=0)// renvoie 1 (vrai)
mais attention : vVariant est un variant vVariant = 0 si vVariant = null alors // ne passe pas ici car vVariant est =0 (non null) fin
Trace(Nullúux)// erreur "Le type booléen ne peut pas être comparé à la valeur Null." Trace(Null="0")// renvoie 0 Trace("0"=Vrai)// renvoie 0
Ceci dit, je trouve très dangereux de travailler avec des variant, à mon sens il vaut toujours mieux faire des transformations de types explicites (NumériqueVersChaine, val...).
A+
Les test que j'effectue sont :
x est un <mettre le type voulue>
x=null si x alors info("x est convertie en vrai") sinon info("x est convertie en faux") fin
Désolé j'ai été coupé ...
Mon problème est la cohérence du transtypage. Je fait de la programmation objet avec windev, je construit des outils pour me faire développer 10 fois plus vite (vraiment). Par exemple j'en avait marre de faire des tableaux dynamiques de structures dont il fallait suivre la taille à la main. Donc je me suis fait une classe liste. Dans cette liste je met des entier, des chaines, des trucs, des listes, ... J'ai un itérateur dessus et des fonctions d'accès indexé.
et quand j'écris :
ch est une chaine
ch=ma_liste:get(x) //accés à un zone vide. si ch="" alors //ne passe jammais la car null convertie en "0" fin
Bon mais si c'est corriger en Windev 12 alors je verrai lorsque l'on achètera WD 15 ou 16