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...
Ok merci pour l'info, donc je codais de la manière la plus "performante", à ne pas retenir donc Merci "Zazar" a écrit dans le message de news:
> 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
Ok merci pour l'info, donc je codais de la manière la plus "performante", à
ne pas retenir donc
Merci
"Zazar" <DILAVNI.nicolas.prats@iie.cnam.fr.INVALID> a écrit dans le message
de news: OYqB2LfhEHA.3816@TK2MSFTNGP11.phx.gbl...
> 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
Ok merci pour l'info, donc je codais de la manière la plus "performante", à ne pas retenir donc Merci "Zazar" a écrit dans le message de news:
> 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
Laurent Jordi \(www.ezlogic.mc\)
Salut...
Franchement , comment veux tu que la vitesse soit affectée alors que l'on teste une check box... il ne peut pas y en avoir 200 000 2 + si vous vous prenez la tête sur des détail pareils, vous risquer de vous égarer et pisser de la ligne en oubliant votre objectif
Conclusion
FAITES SIMPLE et ALLEZ DROIT AU BUT !
@++
LJ "Patrice" a écrit dans le message de news:
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 > >
Salut...
Franchement , comment veux tu que la vitesse soit affectée alors que l'on
teste une check box... il ne peut pas y en avoir 200 000
2 + si vous vous prenez la tête sur des détail pareils, vous risquer de vous
égarer et pisser de la ligne en oubliant votre objectif
Conclusion
FAITES SIMPLE et ALLEZ DROIT AU BUT !
@++
LJ
"Patrice" <nobody@nowhere.com> a écrit dans le message de
news:OXaboGfhEHA.2784@TK2MSFTNGP09.phx.gbl...
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.
>
> --
> Zazar
>
>
Franchement , comment veux tu que la vitesse soit affectée alors que l'on teste une check box... il ne peut pas y en avoir 200 000 2 + si vous vous prenez la tête sur des détail pareils, vous risquer de vous égarer et pisser de la ligne en oubliant votre objectif
Conclusion
FAITES SIMPLE et ALLEZ DROIT AU BUT !
@++
LJ "Patrice" a écrit dans le message de news:
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
Je suppose que c'est à moi que vous répondiez.
Franchement , comment veux tu que la vitesse soit affectée alors que l'on teste une check box... il ne peut pas y en avoir 200 000
2 + si vous vous prenez la tête sur des détail pareils, vous risquer de
vous
égarer et pisser de la ligne en oubliant votre objectif
Conclusion
FAITES SIMPLE et ALLEZ DROIT AU BUT !
Ce que je dis, c'est que 1) iif est une construction dangereuse 2) iif est lent 3) il existe une alternative ne présentant pas ces défauts
Alors dans ces cas là, on ne se demande pas si dans telle ou telle situation, on peut l'utiliser ou non. On ne l'utilise jamais, c'est tout! Bon aprés, si votre but c'est d'écrire le moins de lignes de code possible c'est votre droit.
-- Zazar
Je suppose que c'est à moi que vous répondiez.
Franchement , comment veux tu que la vitesse soit affectée alors que l'on
teste une check box... il ne peut pas y en avoir 200 000
2 + si vous vous prenez la tête sur des détail pareils, vous risquer de
vous
égarer et pisser de la ligne en oubliant votre objectif
Conclusion
FAITES SIMPLE et ALLEZ DROIT AU BUT !
Ce que je dis, c'est que
1) iif est une construction dangereuse
2) iif est lent
3) il existe une alternative ne présentant pas ces défauts
Alors dans ces cas là, on ne se demande pas si dans telle ou telle
situation, on peut l'utiliser ou non. On ne l'utilise jamais, c'est tout!
Bon aprés, si votre but c'est d'écrire le moins de lignes de code possible
c'est votre droit.
Franchement , comment veux tu que la vitesse soit affectée alors que l'on teste une check box... il ne peut pas y en avoir 200 000
2 + si vous vous prenez la tête sur des détail pareils, vous risquer de
vous
égarer et pisser de la ligne en oubliant votre objectif
Conclusion
FAITES SIMPLE et ALLEZ DROIT AU BUT !
Ce que je dis, c'est que 1) iif est une construction dangereuse 2) iif est lent 3) il existe une alternative ne présentant pas ces défauts
Alors dans ces cas là, on ne se demande pas si dans telle ou telle situation, on peut l'utiliser ou non. On ne l'utilise jamais, c'est tout! Bon aprés, si votre but c'est d'écrire le moins de lignes de code possible c'est votre droit.
-- Zazar
Pierre Alexis [MVP]
Salut Zazar,
Tu as écrit :
Qu'est ce que vous entendez par là ? Convert.ToInt32 fonctionne tout le temps.
On n'est pas "sûr" de la valeur renvoyée... En effet un booléen est généralement définis commme étant un entier égal à 0 si le Booléen est faux, toute autre valeur s'il est vrai... Il est donc nettement plus propre de faire sa propre conversion.
Qu'est ce que vous entendez par là ?
Convert.ToInt32 fonctionne tout le temps.
On n'est pas "sûr" de la valeur renvoyée... En effet un booléen est
généralement définis commme étant un entier égal à 0 si le Booléen est faux,
toute autre valeur s'il est vrai... Il est donc nettement plus propre de faire
sa propre conversion.
Qu'est ce que vous entendez par là ? Convert.ToInt32 fonctionne tout le temps.
On n'est pas "sûr" de la valeur renvoyée... En effet un booléen est généralement définis commme étant un entier égal à 0 si le Booléen est faux, toute autre valeur s'il est vrai... Il est donc nettement plus propre de faire sa propre conversion.
> > Qu'est ce que vous entendez par là ? > Convert.ToInt32 fonctionne tout le temps.
On n'est pas "sûr" de la valeur renvoyée...
Convert.ToInt32(true) renverra toujours 1 et Convert.ToInt32(false) renverra toujours 0.
En effet un booléen est généralement définis commme étant un entier égal à 0 si le Booléen est
faux,
toute autre valeur s'il est vrai...
Non, c'est dans l'autre sens que ça marche. Une valeur nulle est généralement considérée comme égale à false quand on doit l'assimiler à un boolean et une valeur non nulle est généralement considérée comme égale à vraie. Dans le sens bool->int, il n'y a pas de généralités (et si jamais on devait faire le compte, je crois que le true->1 l'emporterait largement). C'est la norme qui détermine éventuellement que faire. Et en .NET, la norme dit que true se convertit en 1.
Il est donc nettement plus propre de faire sa propre conversion.
Si la sémantique de la conversion, c'est je veux l'entier qui correspond à true dans le langage que j'utilise alors il faut utiliser Convert.ToInt32(), si la sémantique de la conversion c'est je veux utiliser ma propre valeur, alors là ok on fait sa propre conversion.
-- Zazar
>
> Qu'est ce que vous entendez par là ?
> Convert.ToInt32 fonctionne tout le temps.
On n'est pas "sûr" de la valeur renvoyée...
Convert.ToInt32(true) renverra toujours 1 et Convert.ToInt32(false) renverra
toujours 0.
En effet un booléen est
généralement définis commme étant un entier égal à 0 si le Booléen est
faux,
toute autre valeur s'il est vrai...
Non, c'est dans l'autre sens que ça marche. Une valeur nulle est
généralement considérée comme égale à false quand on doit l'assimiler à un
boolean et une valeur non nulle est généralement considérée comme égale à
vraie.
Dans le sens bool->int, il n'y a pas de généralités (et si jamais on devait
faire le compte, je crois que le true->1 l'emporterait largement). C'est la
norme qui détermine éventuellement que faire. Et en .NET, la norme dit que
true se convertit en 1.
Il est donc nettement plus propre de faire
sa propre conversion.
Si la sémantique de la conversion, c'est je veux l'entier qui correspond à
true dans le langage que j'utilise alors il faut utiliser Convert.ToInt32(),
si la sémantique de la conversion c'est je veux utiliser ma propre valeur,
alors là ok on fait sa propre conversion.
> > Qu'est ce que vous entendez par là ? > Convert.ToInt32 fonctionne tout le temps.
On n'est pas "sûr" de la valeur renvoyée...
Convert.ToInt32(true) renverra toujours 1 et Convert.ToInt32(false) renverra toujours 0.
En effet un booléen est généralement définis commme étant un entier égal à 0 si le Booléen est
faux,
toute autre valeur s'il est vrai...
Non, c'est dans l'autre sens que ça marche. Une valeur nulle est généralement considérée comme égale à false quand on doit l'assimiler à un boolean et une valeur non nulle est généralement considérée comme égale à vraie. Dans le sens bool->int, il n'y a pas de généralités (et si jamais on devait faire le compte, je crois que le true->1 l'emporterait largement). C'est la norme qui détermine éventuellement que faire. Et en .NET, la norme dit que true se convertit en 1.
Il est donc nettement plus propre de faire sa propre conversion.
Si la sémantique de la conversion, c'est je veux l'entier qui correspond à true dans le langage que j'utilise alors il faut utiliser Convert.ToInt32(), si la sémantique de la conversion c'est je veux utiliser ma propre valeur, alors là ok on fait sa propre conversion.
-- Zazar
Zazar
> > On n'est pas "sûr" de la valeur renvoyée... Convert.ToInt32(true) renverra toujours 1 et Convert.ToInt32(false)
renverra
toujours 0.
Ok, je crois que je viens de comprendre ce que vous vouliez dire par là :
si quelqu'un utilise cette fonction sans en connaître ses spécifications, il ne peut pas savoir ce qu'elle va lui retourner.
C'est ça ?
-- Zazar
> > On n'est pas "sûr" de la valeur renvoyée...
Convert.ToInt32(true) renverra toujours 1 et Convert.ToInt32(false)
renverra
toujours 0.
Ok, je crois que je viens de comprendre ce que vous vouliez dire par là :
si quelqu'un utilise cette fonction sans en connaître ses spécifications, il
ne peut pas savoir ce qu'elle va lui retourner.
> > On n'est pas "sûr" de la valeur renvoyée... Convert.ToInt32(true) renverra toujours 1 et Convert.ToInt32(false)
renverra
toujours 0.
Ok, je crois que je viens de comprendre ce que vous vouliez dire par là :
si quelqu'un utilise cette fonction sans en connaître ses spécifications, il ne peut pas savoir ce qu'elle va lui retourner.
C'est ça ?
-- Zazar
Pierre Alexis [MVP]
Salut Zazar,
Tu as écrit :
Ok, je crois que je viens de comprendre ce que vous vouliez dire par là :
si quelqu'un utilise cette fonction sans en connaître ses spécifications, il ne peut pas savoir ce qu'elle va lui retourner.
C'est ça ?
Oui. Mais d'un autre côté les arguments que tu as donné en réponse à mon message tienne bien la route ;-)
"Si la sémantique de la conversion, c'est je veux l'entier qui correspond à true dans le langage que j'utilise alors il faut utiliser Convert.ToInt32(), si la sémantique de la conversion c'est je veux utiliser ma propre valeur, alors là ok on fait sa propre conversion."
Mais bon, moi j'éviterais quand même les codes du genre :
i += Convert.ToInt32(true)
Car ce n'est pas vraiment clair ce qui se passe pour quelqu'un qui relis le programme. Et ça ne rentre pas vraiment dans la catégorie "je veux l'entier qui correspond à true dans le langage". En général le programmeur qui écrit ce genre de code a derrière la tête le fait qu'un Booléen vaut telle ou telle valeur.
Ok, je crois que je viens de comprendre ce que vous vouliez dire par là :
si quelqu'un utilise cette fonction sans en connaître ses spécifications, il
ne peut pas savoir ce qu'elle va lui retourner.
C'est ça ?
Oui. Mais d'un autre côté les arguments que tu as donné en réponse à mon
message tienne bien la route ;-)
"Si la sémantique de la conversion, c'est je veux l'entier qui correspond à
true dans le langage que j'utilise alors il faut utiliser Convert.ToInt32(),
si la sémantique de la conversion c'est je veux utiliser ma propre valeur,
alors là ok on fait sa propre conversion."
Mais bon, moi j'éviterais quand même les codes du genre :
i += Convert.ToInt32(true)
Car ce n'est pas vraiment clair ce qui se passe pour quelqu'un qui relis le
programme. Et ça ne rentre pas vraiment dans la catégorie "je veux l'entier
qui correspond à true dans le langage". En général le programmeur qui écrit ce
genre de code a derrière la tête le fait qu'un Booléen vaut telle ou telle
valeur.
Ok, je crois que je viens de comprendre ce que vous vouliez dire par là :
si quelqu'un utilise cette fonction sans en connaître ses spécifications, il ne peut pas savoir ce qu'elle va lui retourner.
C'est ça ?
Oui. Mais d'un autre côté les arguments que tu as donné en réponse à mon message tienne bien la route ;-)
"Si la sémantique de la conversion, c'est je veux l'entier qui correspond à true dans le langage que j'utilise alors il faut utiliser Convert.ToInt32(), si la sémantique de la conversion c'est je veux utiliser ma propre valeur, alors là ok on fait sa propre conversion."
Mais bon, moi j'éviterais quand même les codes du genre :
i += Convert.ToInt32(true)
Car ce n'est pas vraiment clair ce qui se passe pour quelqu'un qui relis le programme. Et ça ne rentre pas vraiment dans la catégorie "je veux l'entier qui correspond à true dans le langage". En général le programmeur qui écrit ce genre de code a derrière la tête le fait qu'un Booléen vaut telle ou telle valeur.
> Mais bon, moi j'éviterais quand même les codes du genre :
i += Convert.ToInt32(true)
Car ce n'est pas vraiment clair ce qui se passe pour quelqu'un qui relis
le
programme. Et ça ne rentre pas vraiment dans la catégorie "je veux
l'entier
qui correspond à true dans le langage". En général le programmeur qui
écrit ce
genre de code a derrière la tête le fait qu'un Booléen vaut telle ou telle valeur.
Je suis d'accord. En fait, en poussant encore un peu la reflexion, j'irais jusqu'à dire que je ne vois pas l'intérêt de convertir un booléen en int quelque soit la méthode. Ca revient à détyper une variable booléenne.
Je ne vois pas quelle logique justifierait un code du style : i += Convert.ToInt32(true) ' ou MyConvert(true)
Je préfèrerais un code du genre : if (true) then i += 1 'ou autre valeur
-- Zazar
>
Mais bon, moi j'éviterais quand même les codes du genre :
i += Convert.ToInt32(true)
Car ce n'est pas vraiment clair ce qui se passe pour quelqu'un qui relis
le
programme. Et ça ne rentre pas vraiment dans la catégorie "je veux
l'entier
qui correspond à true dans le langage". En général le programmeur qui
écrit ce
genre de code a derrière la tête le fait qu'un Booléen vaut telle ou telle
valeur.
Je suis d'accord. En fait, en poussant encore un peu la reflexion, j'irais
jusqu'à dire que je ne vois pas l'intérêt de convertir un booléen en int
quelque soit la méthode. Ca revient à détyper une variable booléenne.
Je ne vois pas quelle logique justifierait un code du style :
i += Convert.ToInt32(true) ' ou MyConvert(true)
Je préfèrerais un code du genre :
if (true) then i += 1 'ou autre valeur
> Mais bon, moi j'éviterais quand même les codes du genre :
i += Convert.ToInt32(true)
Car ce n'est pas vraiment clair ce qui se passe pour quelqu'un qui relis
le
programme. Et ça ne rentre pas vraiment dans la catégorie "je veux
l'entier
qui correspond à true dans le langage". En général le programmeur qui
écrit ce
genre de code a derrière la tête le fait qu'un Booléen vaut telle ou telle valeur.
Je suis d'accord. En fait, en poussant encore un peu la reflexion, j'irais jusqu'à dire que je ne vois pas l'intérêt de convertir un booléen en int quelque soit la méthode. Ca revient à détyper une variable booléenne.
Je ne vois pas quelle logique justifierait un code du style : i += Convert.ToInt32(true) ' ou MyConvert(true)
Je préfèrerais un code du genre : if (true) then i += 1 'ou autre valeur
-- Zazar
ng
Salut,
En .Net le type boolean renvoie 1 pour True et 0 pour False, CInt() renvoie -1 pour True pour garder la compatibilité avec les aplications VB6 (qui utilisent un type VARIANT_BOOL : -1 pour True (ou toute autre valeur diffèrente de 0) et 0 pour False).
De plus CInt() est censé renvoyer un integer vb6 (l'équivalent du short .Net) c-a-d codé sur 16bits et non 32. En .Net on utilisera donc Convert.ToInt32() pour récupèrer un entier sur 32bits.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
MrChris a écrit :
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...
Pourquoi chez moi true = -1 !!!!!!!!!!!
Merci MrChris
Salut,
En .Net le type boolean renvoie 1 pour True et 0 pour False, CInt()
renvoie -1 pour True pour garder la compatibilité avec les aplications VB6
(qui utilisent un type VARIANT_BOOL : -1 pour True (ou toute autre valeur
diffèrente de 0) et 0 pour False).
De plus CInt() est censé renvoyer un integer vb6 (l'équivalent du short
.Net) c-a-d codé sur 16bits et non 32.
En .Net on utilisera donc Convert.ToInt32() pour récupèrer un entier sur
32bits.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/
MrChris <mrchris@spam.com> a écrit :
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...
En .Net le type boolean renvoie 1 pour True et 0 pour False, CInt() renvoie -1 pour True pour garder la compatibilité avec les aplications VB6 (qui utilisent un type VARIANT_BOOL : -1 pour True (ou toute autre valeur diffèrente de 0) et 0 pour False).
De plus CInt() est censé renvoyer un integer vb6 (l'équivalent du short .Net) c-a-d codé sur 16bits et non 32. En .Net on utilisera donc Convert.ToInt32() pour récupèrer un entier sur 32bits.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
MrChris a écrit :
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...