DWORD et VB6

Résolu
Messages postés
9
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
18 novembre 2006
-
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
Bonjour,

J'ai besoin de vos lumières

dans un programme de jeu, les caractéristiques d'un matériels sont stockée dans deux DWORD non signés, chaque bit selon qu'il est à 0 ou à 1signifie qu'un élément specifique est associé au matériel
donc pour moi hop on fait correspondre le DWORD a un long
J'ai bien sur écrit dans les déclaration de mon module principal
pour chaque caracteristique
public const EST_HEUREUX=&H1
......
public const MOUVEMENT_LENT=&H8000
public const PEUT_CONDUIRE=&H8000000

dans une sub je déclare
dim toto as long

if (DWORD AND MOVEMENT_LENT) = MOVEMENT_LENT then ' la caractéristique est vrai pour l'équipement
   code à derouler
end if

problème sous VB &H8000 = -32768 et non pas 32768
et je ne peux pas valider ma caractéristique

soit il y a une astuce que je ne connais pas, soit il faut que je réécrive une partie de mon code pour créer un tableau de vrai/faux correspondant à chaque bit du DWORD.

J'espère êter clair

Der Wanderer

5 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Oui VB a tendance à se mélanger avec les constantes.

Pour les constantes long en hexa <65536 il faut lui dire que c'est une dévlaration en long en rajoutant un signe & après le code hexa.

public const MOUVEMENT_LENT= &H8000 &

---- Sevyc64  (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
pour ton test, tu as possibilité de faire aussi :

If CBool (DWORD AND MOVEMENT_LENT)  Then
    '# code à derouler
End If

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
9
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
18 novembre 2006

Oui mais petit problème pour &H80000000 !!

Der WanderLost( pas la série )
Messages postés
9
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
18 novembre 2006

Oui ca marche,

le bit a bit c'est marrant -32768=32768

Merci

Der Wanderer
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
c'est là tout la nuance entre nombres signés et non signés ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic