ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 2010
-
1 mai 2005 à 14:01
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 2010
-
2 mai 2005 à 16:56
Salut, je travaille sur la version 2 de mon visualisateur de fichier 3ds, et la j'avoue etre bloqué, j'ai une constante et une condition, je teste la constante avec une var, la var ayant la meme valeur que la constante cependant la condition est fausse .... si vous avez une idée ....
Public Const Objet_Block As Integer = &H3D3D Or &H100 Or &H1100 Or &H1101 Or &H1200 Or &H1201 Or &H1300 Or &H1301 Or &H1400 Or &H1420 Or &H1450 Or &H1460 Or &H1470 Or &H2100 Or &H2200 Or &H2210 Or &H2201 Or &H2210 Or &H2300 Or &H2310 Or &H2301 Or &H2302 Or &H2303 Or &H3D3E
Public Const Triang_Mesh_Block As Integer = &H4000 Or &H4010 Or &H4012 Or &H4013 Or &H4015 Or &H4017 Or &H4100 Or &H4110 Or &H4120 Or &H4130 Or &H4140 Or &H4150 Or &H4160 Or &H4165 Or &H4181 Or &H4182 Or &H4600 Or &H4610 Or &H4627 Or &H4630 Or &H4641 Or &H4650 Or &H4651 Or &H4652 Or &H4653 Or &H4656 Or &H4658 Or &H4620 Or &H4625 Or &H4659 Or &H465A Or &H465B Or &H4700 Or &H7001 Or &H7011 Or &H7012 Or &H7020
tBloc.Entete as integer
tbloc.Entete = 15677 ' donc comme &H3D3D
If tBloc.Entete = Objet_Block Or Triang_Mesh_Block Then
If tBloc.Entete = Objet_Block Then '3D editor chunk
Call Editor(tBloc.Entete, fpos)
ElseIf tBloc.Entete = Triang_Mesh_Block Then
End If
End If
Donc voiçi le code, la premiere condition est vraix, mais quand j'arrive dans la deuxieme sa marche plus....
cs_Zeroc00l
Messages postés367Date d'inscriptionlundi 1 avril 2002StatutMembreDernière intervention11 février 2010 1 mai 2005 à 17:22
Tu ne peux pas faire ca .. :
Voici un exemle ou toute les valeurs numerique sont en binaire et les operateur logique aussi :
j'ai trois constante :
EST_POMME = 1
EST_POIRE = 10
EST BANANE = 11
Tu veux faire un ensemble (EST_POMME ou EST_POIRE)
toi tu ecris :
EST_POMME_POIRE = EST_POMME ou EST_POIRE
Il s'agit d'un OU binaire donc tu obtient :
EST_POMME_POIRE = 11
maintenant comment savoir si une constante est une de ces constante la ?
Admettons A = EST_BANANE
On va faire : (A et EST_BANANE) qui renverra "11" qui est une valeur
differente de 0 donc vrai .... or EST _BANANE n'etait pas dans ton
ensemble !
on peut donc essayer (A ou EST_BANANE) idem ...
Autrement dit ca ne marche pas ..
la seule facon pour que cela marche est la suivante:
En utilisant le et :
il ne faut pas, en faisant un ensemble :
CONST_1 ou CONST_2 ou CONST_3 ... pouvoir construire une autre CONST (entierement)
On construisait la const EST_BANANE a partir des deux autres ..? ce qui n'etait pas bon
le test qu'il faut faire ensuite : If (A = A and ENSEMBLE)
En utilisant le ou :
il ne faut pas, en faisant un ensemble :
CONST_1 ou CONST_2 ou CONST_3 ... pouvoir construire une partie d'une autre CONST
exemple : ENSEMBLE 11 ou 100 [ 111 ]
if (1001 ou ENSEMBLE ) retourne vrai alors que 1001 n'etait pas une const dedans ...
Bref la meilleur solution c'est d'utilser les puissance de deux, dans ce cas aucun probleme
const1 = 1
const2 = 10
const3 = 100
const4 = 1000
const5 = 10000
ENSEMBLE = const1 ou const 2 ou const 3
pour tester if (A et ENSEMBLE) renvoie A si A est effectivement dans l'ensemble
0 sinon
La difference avec precedement c'ets que dans le cas precedent ca
pouvait renvoyer ue valeur differente de 0 mais etre faut quand meme
.... d'ou le test A = A et ENSEMBLE
Bon j'espere que j'ai pas ete tres incomprehensible ..
Le mieux c'ets que tu y reflechisse par toi meme !
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 20101 2 mai 2005 à 16:56
Je vous remerci, tout deux, de m'avoir repondu. Pour valtrase, effectivement un select case simplifierais le code, mais ceci ne me servirais en rien pour ce debut, car le select case est plus loin dans le code ...
Pour Gobillot, c'est un possibilité de tester le bit qui differe.
La solution que j'ai choisis et d'utiliser une fonction et un tableau qui verifie si la valeur est presente et qui renvoie True ou False, je vous remercie ....