marty14
Messages postés104Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention29 mai 2011
-
22 août 2008 à 18:57
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
23 août 2008 à 21:43
Bonjour,
sachant que idVendor:0x0256 = &H256
idProduct:0x0789 = &H789
A votre avis que me donne ??? :
idVendor:0xFFFF
idProduct:0xFFFF
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 23 août 2008 à 01:21
je ne t'ai qu'à moitié répondu LIBRE_MAX ^^
(quoi que)
j' ai copié la valeur BackColor (Blanc) = &H00FFFFFF&
En passant à la ligne (Enter) ma valeur devient 16777215
expliqué
J' ai refait la même chose sur une autre ligne mais j' ai tapé
Const D =&H00FFFFFF&
Retour à la ligne et ça devient
Const D = &HFFFFFF
en tapant ta constante, comme indiqué, VB va enlever les 0 inutiles
donc on pas de
&H00FFFFFF&
à
&HFFFFFF&
le & de droite est pour signaler le LONG (expliqué aussi, c'est aussi ce que casy disait ; pour éviter les problèmes de type)
or &HFFFFFF& est forcément supérieur à la plus grande valeur de l'INTEGER.
étant donc LONG, pas d'ambiguïté, l'IDE fait sauter ce dernier &
même en l'ajoutant manuellement, il sera supprimé
idem pour tout à l'heure, en décimal uniquement cette fois-ci :
Private Const idOther2 As Long = 65535
normal puisque 65535 est aussi forcément un long, supérieur à 32767
aucune idée par contre sur le pourquoi du '&HFF&' accepté/conservé
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 23 août 2008 à 01:45
j' ai les neurones qui chauffent, mais je suis de plus en plus moins c..
Alors je tente une explication :
Si la valeur de &HFF est inférieure à integer, placé devant une const avec & en dernier, celle-ci sera de type long en dépit de sa valeur.
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 23 août 2008 à 02:12
si la valeur de &HXX (pas FF) est, au final, un entier, le fait d'ajouter & l'en rendra long oui
mais il ne faut pas confondre avec le fait de déjà typer la constante
const C as long= 2
2 est integer par défaut, C sera quand même long, mais çà oblige une conversion à VB pour rien. c'est pourquoi on mettra plutôt
const C as long=2&
voir premier message :
par exemple le type (vartype) de 10 retournera un integer(2), contre 10& qui retournera un long(3)
Function GetStrType(ByVal l As Long) As String
If l = vbInteger Then
GetStrType = "INTEGER"
ElseIf l = vbLong Then
GetStrType = "LONG"
Else
GetStrType = "????"
End If
End Function
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 23 août 2008 à 02:24
typename...., j'aime bien m'embêter pour rien moi
oui, à savoir que comme C et D ne sont pas typées, elles sont en Variant. pour çà que le & change cette valeur (type)
tout comme dans mon exemple au dessus
déclare C et D as long, le & n'altèrera pas
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 23 août 2008 à 02:38
... et avec ton test je vois pourquoi VB accepte &HFFFF&, c'est un ENTIER non-signé. donc en hexa on ne partira pas sur un entier jusqu'à 32767 mais bien 65535
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
marty14
Messages postés104Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention29 mai 2011 23 août 2008 à 17:39
Bonjour à tous et encore merci pour l'aide apportée ca marche impec, il me reste qu'un petit soucis en déclarant toute vos informations comme ceci si je connecte le peripherique :VID&H45E& PID&H284& celui ci est introuvable alors que si je connecte le peripherique: VID&HFFFF& PID&HFFFF& est trouvé sans aucun probleme. ou ce trouve l'erreur ?
'idVendor:0x0256
Private Const VendorID1 As Long = &H45E&
Private Const VendorID2 As Long = &HFFFF&
Private Const VendorID3 As Long = &H40B&
'idProduct:0x0789
Private Const ProductID1 As Long = &H284&
Private Const ProductID2 As Long = &HFFFF&
Private Const ProductID3 As Long = &H6521&
Private Const VendorID = VendorID1 or VendorID2 Or VendorID3
Private Const ProductID = ProductID1 or ProductID2 Or ProductID3
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 23 août 2008 à 18:02
Private Const VendorID = VendorID1 or VendorID2 Or VendorID3
soit &H45E or &HFFFF or &H40B = &HFFFF
Private Const ProductID = ProductID1 or ProductID2 Or ProductID3
soit &H284 or &HFFFF or &H6521 = &HFFFF
c'est donc bien le périphérique VID&HFFFF / PID&HFFFFqui est attendu
Pour rappel, Or est l'opérateur du Ou Logique
Lorsque tu fait un Or entre deux valeurs chacun des bits de chacune des valeurs est analysé. Si au moins un des 2 bits est égal à 1 alors le bit correspond du résultat sera égal à 1 sinon il est égal à 0
par exemple pour le VID :
&H45E ==> 0000010001011110 en binaire
&HFFFF ==> 1111111111111111 en binaire
&H40B ==> 0000010000001011 en binaire
--------------------------------------
1111111111111111
Si tu analyse les bits colonne par colonne tu vois bien que le résultat est 1111111111111111 soit &HFFFF
marty14
Messages postés104Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention29 mai 2011 23 août 2008 à 18:35
comment dois je faire si par exemple je veus indiquer que BB est egal a VendorID1 ou VendorID2 ou VendorID3 ce qui dependras de la peripherique connecté ?
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 23 août 2008 à 20:11
Salut,
Dans ce cas pourquoi ne pas utiliser une variable au lieu d' une Const.On pourras alors lui affecter le résultat d' une fonction. <hr />... Y'en a même qui disent qu'ils l'ont vu voler.