Je ne comprend plus...
J'ai une checkbox dans une template columns d'un datagrid.
Pour récupérer sa valeur je fait :
LeBool = CType(Datagrid1.Items(x).Cells(1).Controls(1), CheckBox).Checked
Puis j'aimerais bien que LeBool me renvoi 0 ou 1 à la place de True ou
False.
Donc je fait cint(LeBool) et la c'est le drame, quand c'est true il me
sort -1 !!!
Idem si je fait ctype(LeBool,Integer), de même si j'essaye avec double,
short, int16...
Je ne comprend plus... J'ai une checkbox dans une template columns d'un datagrid.
Pour récupérer sa valeur je fait : LeBool = CType(Datagrid1.Items(x).Cells(1).Controls(1), CheckBox).Checked Puis j'aimerais bien que LeBool me renvoi 0 ou 1 à la place de True ou False.
Donc je fait cint(LeBool) et la c'est le drame, quand c'est true il me sort -1 !!!
Idem si je fait ctype(LeBool,Integer), de même si j'essaye avec double, short, int16...
"MrChris" <mrchris@spam.com> a écrit dans le message de
news:uZb5H5dhEHA.3864@TK2MSFTNGP10.phx.gbl...
Salut !
Je ne comprend plus...
J'ai une checkbox dans une template columns d'un datagrid.
Pour récupérer sa valeur je fait :
LeBool = CType(Datagrid1.Items(x).Cells(1).Controls(1), CheckBox).Checked
Puis j'aimerais bien que LeBool me renvoi 0 ou 1 à la place de True ou
False.
Donc je fait cint(LeBool) et la c'est le drame, quand c'est true il me
sort -1 !!!
Idem si je fait ctype(LeBool,Integer), de même si j'essaye avec double,
short, int16...
Je ne comprend plus... J'ai une checkbox dans une template columns d'un datagrid.
Pour récupérer sa valeur je fait : LeBool = CType(Datagrid1.Items(x).Cells(1).Controls(1), CheckBox).Checked Puis j'aimerais bien que LeBool me renvoi 0 ou 1 à la place de True ou False.
Donc je fait cint(LeBool) et la c'est le drame, quand c'est true il me sort -1 !!!
Idem si je fait ctype(LeBool,Integer), de même si j'essaye avec double, short, int16...
Pourquoi chez moi true = -1 !!!!!!!!!!!
Merci MrChris
Zazar
Bonjour,
Donc je fait cint(LeBool) et la c'est le drame, quand c'est true il me sort -1 !!!
En basic et donc sous VB6, bool a la valeur -1 quand il est casté en int. Dans le Framework.net, bool a la valeur 1.
Les concepteurs de VB.NET ont décidé que cint(true) renverrait -1 pour des raisons de compatibilité avec VB6. Pour rappel, cint n'est absolument pas une fonction/méthode .NET, c'est une fonction VB.NET : lors de la compilation, elle est remplacée par du vraie code .NET. Il ne faut plus utiliser cint, mais plutôt Convert.ToInt32() qui sous VB.NET comme sous tous les autre langages renvoie 1 pour la valeur true.
-- Zazar
Bonjour,
Donc je fait cint(LeBool) et la c'est le drame, quand c'est true il me
sort -1 !!!
En basic et donc sous VB6, bool a la valeur -1 quand il est casté en int.
Dans le Framework.net, bool a la valeur 1.
Les concepteurs de VB.NET ont décidé que cint(true) renverrait -1 pour des
raisons de compatibilité avec VB6.
Pour rappel, cint n'est absolument pas une fonction/méthode .NET, c'est une
fonction VB.NET : lors de la compilation, elle est remplacée par du vraie
code .NET. Il ne faut plus utiliser cint, mais plutôt Convert.ToInt32() qui
sous VB.NET comme sous tous les autre langages renvoie 1 pour la valeur
true.
Donc je fait cint(LeBool) et la c'est le drame, quand c'est true il me sort -1 !!!
En basic et donc sous VB6, bool a la valeur -1 quand il est casté en int. Dans le Framework.net, bool a la valeur 1.
Les concepteurs de VB.NET ont décidé que cint(true) renverrait -1 pour des raisons de compatibilité avec VB6. Pour rappel, cint n'est absolument pas une fonction/méthode .NET, c'est une fonction VB.NET : lors de la compilation, elle est remplacée par du vraie code .NET. Il ne faut plus utiliser cint, mais plutôt Convert.ToInt32() qui sous VB.NET comme sous tous les autre langages renvoie 1 pour la valeur true.
-- Zazar
MrChris
Alors là je dis bravo !!! Je savais que cint n'etait pas du vrai code ;)) , il me semblait que ctype oui par contre...
Maintenant il faut juste que les concepteurs arrêtent de fumer et moi commencer à lire la doc...
Merci MrChris
Alors là je dis bravo !!!
Je savais que cint n'etait pas du vrai code ;)) ,
il me semblait que ctype oui par contre...
Maintenant il faut juste que les concepteurs arrêtent
de fumer et moi commencer à lire la doc...
> L'avantage du iif est que quelque soit la caleur de true, tu es sûr que ça marche...
Qu'est ce que vous entendez par là ? Convert.ToInt32 fonctionne tout le temps.
-- Zazar
Zazar
> Oui, et en plus je peux choisir moi même les valeurs que je veux pour true et false...
Alors dans ce cas faîtes attention au iif. C'est acceptable de l'utiliser pour renvoyer des constantes mais pas autre chose (et encore pas dans le cas où la vitesse est vraiment critique). Dans les autres situations, préfèrez lui un classique if then else endif. (En fait, il faudrait le faire aussi dans le cas de constantes mais bon).
-- Zazar
> Oui, et en plus je peux choisir moi même les valeurs que je veux pour true
et false...
Alors dans ce cas faîtes attention au iif. C'est acceptable de l'utiliser
pour renvoyer des constantes mais pas autre chose (et encore pas dans le cas
où la vitesse est vraiment critique).
Dans les autres situations, préfèrez lui un classique if then else endif.
(En fait, il faudrait le faire aussi dans le cas de constantes mais bon).
> Oui, et en plus je peux choisir moi même les valeurs que je veux pour true et false...
Alors dans ce cas faîtes attention au iif. C'est acceptable de l'utiliser pour renvoyer des constantes mais pas autre chose (et encore pas dans le cas où la vitesse est vraiment critique). Dans les autres situations, préfèrez lui un classique if then else endif. (En fait, il faudrait le faire aussi dans le cas de constantes mais bon).
-- Zazar
AlexC
iif ? ce n'ets pas une faut de frappe ? c'est quoi la différence avec if ? t'ain on en apprends tous les jours .. :)
"Zazar" a écrit dans le message de news: #
> Oui, et en plus je peux choisir moi même les valeurs que je veux pour
true
> et false... >
Alors dans ce cas faîtes attention au iif. C'est acceptable de l'utiliser pour renvoyer des constantes mais pas autre chose (et encore pas dans le
cas
où la vitesse est vraiment critique). Dans les autres situations, préfèrez lui un classique if then else endif. (En fait, il faudrait le faire aussi dans le cas de constantes mais bon).
-- Zazar
iif ? ce n'ets pas une faut de frappe ?
c'est quoi la différence avec if ?
t'ain on en apprends tous les jours .. :)
"Zazar" <DILAVNI.nicolas.prats@iie.cnam.fr.INVALID> a écrit dans le message
de news: #qdFX5ehEHA.140@TK2MSFTNGP12.phx.gbl...
> Oui, et en plus je peux choisir moi même les valeurs que je veux pour
true
> et false...
>
Alors dans ce cas faîtes attention au iif. C'est acceptable de l'utiliser
pour renvoyer des constantes mais pas autre chose (et encore pas dans le
cas
où la vitesse est vraiment critique).
Dans les autres situations, préfèrez lui un classique if then else endif.
(En fait, il faudrait le faire aussi dans le cas de constantes mais bon).
iif ? ce n'ets pas une faut de frappe ? c'est quoi la différence avec if ? t'ain on en apprends tous les jours .. :)
"Zazar" a écrit dans le message de news: #
> Oui, et en plus je peux choisir moi même les valeurs que je veux pour
true
> et false... >
Alors dans ce cas faîtes attention au iif. C'est acceptable de l'utiliser pour renvoyer des constantes mais pas autre chose (et encore pas dans le
cas
où la vitesse est vraiment critique). Dans les autres situations, préfèrez lui un classique if then else endif. (En fait, il faudrait le faire aussi dans le cas de constantes mais bon).
-- Zazar
Patrice
Comment va être utilisée cette variable par la suite ?
Je ferais plutôt : Dim LeBool As Boolean LeBool = CType(Datagrid1.Items(x).Cells(1).Controls(1), CheckBox).Checked
Et plus loin
If LeBool Then ' Si vrai Else ' Si faux End If
de façon à ne pas utiliser la valeur sous-jacente utilisée pour coder "vrai".
Initialement CInt(True) devait retourner 1 mais ceux ayant utilisé en VB la valeur explicite -1 ont râlé et MS a fait marche arrière d'où la différence entre 1 sous .NET et -1 avec les constructions spécifiques à VB (pour "compatibilité" avec le code existant).
Patrice
--
"Zazar" a écrit dans le message de news:
> L'avantage du iif est que quelque soit la caleur de true, tu es sûr que
ça
> marche...
Qu'est ce que vous entendez par là ? Convert.ToInt32 fonctionne tout le temps.
-- Zazar
Comment va être utilisée cette variable par la suite ?
Je ferais plutôt :
Dim LeBool As Boolean
LeBool = CType(Datagrid1.Items(x).Cells(1).Controls(1), CheckBox).Checked
Et plus loin
If LeBool Then
' Si vrai
Else
' Si faux
End If
de façon à ne pas utiliser la valeur sous-jacente utilisée pour coder
"vrai".
Initialement CInt(True) devait retourner 1 mais ceux ayant utilisé en VB la
valeur explicite -1 ont râlé et MS a fait marche arrière d'où la différence
entre 1 sous .NET et -1 avec les constructions spécifiques à VB (pour
"compatibilité" avec le code existant).
Patrice
--
"Zazar" <DILAVNI.nicolas.prats@iie.cnam.fr.INVALID> a écrit dans le message
de news:OBElF3ehEHA.3264@tk2msftngp13.phx.gbl...
> L'avantage du iif est que quelque soit la caleur de true, tu es sûr que
ça
> marche...
Qu'est ce que vous entendez par là ?
Convert.ToInt32 fonctionne tout le temps.
Comment va être utilisée cette variable par la suite ?
Je ferais plutôt : Dim LeBool As Boolean LeBool = CType(Datagrid1.Items(x).Cells(1).Controls(1), CheckBox).Checked
Et plus loin
If LeBool Then ' Si vrai Else ' Si faux End If
de façon à ne pas utiliser la valeur sous-jacente utilisée pour coder "vrai".
Initialement CInt(True) devait retourner 1 mais ceux ayant utilisé en VB la valeur explicite -1 ont râlé et MS a fait marche arrière d'où la différence entre 1 sous .NET et -1 avec les constructions spécifiques à VB (pour "compatibilité" avec le code existant).
Patrice
--
"Zazar" a écrit dans le message de news:
> L'avantage du iif est que quelque soit la caleur de true, tu es sûr que
ça
> marche...
Qu'est ce que vous entendez par là ? Convert.ToInt32 fonctionne tout le temps.
-- Zazar
Zazar
> iif ? ce n'ets pas une faut de frappe ? c'est quoi la différence avec if ?
La syntaxe du iff c'est : result = iif(expr1, expr2, expr3)
Si expr1 est évalué à true, alors result sera égal au résultat de l'évaluation de expr2, sinon il sera égal à l'évaluation de expr3. C'est à peu prés l'équivalent de : result = expr1 ? expr2 : expr3 qui existe en C, java, c#, ...
Le problème du iff, c'est que expr2 et expr3 sont tout le temps évalué : ça diminue les performances et ça peut entraîner des bugs. C'est équivalent à : _res1 = expr1 _res2 = expr2 _res3 = expr3 if _res1 then result = _res2 else result = _res3 end if
Il vaut mieux lui préfèrer la syntaxe suivante :
if expr1 then result = expr2 else result = expr3 end if
-- Zazar
> iif ? ce n'ets pas une faut de frappe ?
c'est quoi la différence avec if ?
La syntaxe du iff c'est :
result = iif(expr1, expr2, expr3)
Si expr1 est évalué à true, alors result sera égal au résultat de
l'évaluation de expr2, sinon il sera égal à l'évaluation de expr3.
C'est à peu prés l'équivalent de :
result = expr1 ? expr2 : expr3 qui existe en C, java, c#, ...
Le problème du iff, c'est que expr2 et expr3 sont tout le temps évalué : ça
diminue les performances et ça peut entraîner des bugs. C'est équivalent à :
_res1 = expr1
_res2 = expr2
_res3 = expr3
if _res1 then
result = _res2
else
result = _res3
end if
Il vaut mieux lui préfèrer la syntaxe suivante :
if expr1 then
result = expr2
else
result = expr3
end if
> iif ? ce n'ets pas une faut de frappe ? c'est quoi la différence avec if ?
La syntaxe du iff c'est : result = iif(expr1, expr2, expr3)
Si expr1 est évalué à true, alors result sera égal au résultat de l'évaluation de expr2, sinon il sera égal à l'évaluation de expr3. C'est à peu prés l'équivalent de : result = expr1 ? expr2 : expr3 qui existe en C, java, c#, ...
Le problème du iff, c'est que expr2 et expr3 sont tout le temps évalué : ça diminue les performances et ça peut entraîner des bugs. C'est équivalent à : _res1 = expr1 _res2 = expr2 _res3 = expr3 if _res1 then result = _res2 else result = _res3 end if
Il vaut mieux lui préfèrer la syntaxe suivante :
if expr1 then result = expr2 else result = expr3 end if