Savoir si une valeur existe dans une variable

Signaler
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013
-
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013
-
Bonsoir,

Je ne savais vraiment pas comment trouver ceci et d'ailleurs le titre n'est pas très explicite !
Bon, j'ai recopier le problème sur un code très simple car j’allais pas donner tous mon code ou ça ne l'aurais pas fait je pense !

Voici le code en question:
Module Module1

    Sub Main()

        Dim A As Integer =  0

        A = 2
        A = A Or 3
        A = A Or 5
        A = A Or 8
        A = A Or 12

        Console.WriteLine(A)
        Console.ReadLine()

    End Sub

End Module


Si je me suis pas trompé et normalement non, "Or" veux dire en gros "Avec", en plus, ou insérer ou un truc du genre
Donc là j'ai bien fais: A = 2 avec 3 avec 5 avec 8 avec 13

Le but du jeu ici est de savoir si A contient la valeur 3 par exemple ou 8 ou même plusieurs

Application:

Imaginer que chaque valeur est une CheckBox
Si elle est activé, alors la valeur existe
Sinon elle n’existe pas !

Si par exemple la CheckBox qui a la valeur 3 est activer ainsi que celle qui a la valeur 8
Si je fais par exemple:

Si A contient la valeur 3 alors faire
...
Sinon Si A contient la valeur 8 faire
...
Sinon
...
Fin Si

Petit code pour donner un petit exemple dans mon programme:
If RadioBouton_Information.Checked   = True Then
            Style = MsgBoxStyle.Information
        ElseIf RadioBouton_Question.Checked = True Then
            Style = MsgBoxStyle.Question
        ElseIf RadioBouton_Avertissement.Checked = True Then
            Style = MsgBoxStyle.Exclamation
        ElseIf RadioBouton_Critique.Checked = True Then
            Style = MsgBoxStyle.Critical
        End If


        If RadioBouton_Ok.Checked = True Then
            Style = Style Or MsgBoxStyle.OkOnly
        ElseIf RadioBouton_Ok_Annuler.Checked = True Then
            Style = Style Or MsgBoxStyle.OkCancel
        ElseIf RadioBouton_Oui_Non.Checked = True Then
            Style = Style Or MsgBoxStyle.YesNo
        ElseIf RadioBouton_Oui_Non_Annuler.Checked = True Then
            Style = Style Or MsgBoxStyle.YesNoCancel
        ElseIf RadioBouton_Recommencer_Annuler.Checked = True Then
            Style = Style Or MsgBoxStyle.RetryCancel
        ElseIf RadioBouton_Abandonner_Recommencer_Igniorer.Checked = True Then
            Style = Style Or MsgBoxStyle.AbortRetryIgnore
        End If


        If RadioButton_Bouton_1.Checked = True Then
            Style = Style Or MsgBoxStyle.DefaultButton1
        ElseIf RadioButton_Bouton_2.Checked = True Then
            Style = Style Or MsgBoxStyle.DefaultButton2
        ElseIf RadioButton_Bouton_3.Checked = True Then
            Style = Style Or MsgBoxStyle.DefaultButton3
        End If


        If CheckBox_Boîte_de_dialogue_au_premier_plan.Checked = True Then
            Style = Style Or MsgBoxStyle.MsgBoxSetForeground
        End If

        If CheckBox_Interrompre_lapplication_en_court.Checked = True Then
            Style = Style Or MsgBoxStyle.ApplicationModal
        End If

        If CheckBox_Interrompre_toutes_les_lapplications.Checked = True Then
            Style = Style Or MsgBoxStyle.SystemModal
        End If

        If CheckBox_Le_texte_se_lit_de_droite_à_gauche.Checked = True Then
            Style = Style Or MsgBoxStyle.MsgBoxRtlReading
        End If

        If CheckBox_Aligné_le_texte_de_la_boîte_à_droite.Checked Then
            Style = Style Or MsgBoxStyle.MsgBoxRight
        End If

        If CheckBox_Afficher_en_plus_le_bouton_Aide.Checked Then
            Style = Style Or MsgBoxStyle.MsgBoxHelp
        End If


Bon ba maintenant il faut que je sache qu'est se qui à été choisie !
C'est pour crée un code en fonction des valeurs choisie !

J’espère que vous pourrez m'aider !

10 réponses


Bonjour,

Sers toi du mode pas à pas (F8) et des points d'arrêts (F9) pour savoir ce que fait ton code. Promène ensuite ta souris sur tes variables pour vérifier leur valeur.
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

Pourquoi tu me dit ça banana32
En quoi cella va t-il m'apporter la réponse

Déjà le code est t-il correcte ?!
C'est comme ça qu'il faut faire ?

Je vais faire se que tu viens de me proposer au cas ou !
Merci !

Bonjour,

Pourquoi tu me dit ça banana32
En quoi cella va t-il m'apporter la réponse


Parce que le mode pas à pas permet de suivre l'exécution de ton code instruction par instruction. Tu vas voir à chaque instruction quelle valeur prend quelle variable et quelle instruction est excutée après.

Si je me suis pas trompé et normalement non, "Or" veux dire en gros "Avec", en plus, ou insérer ou un truc du genre
Donc là j'ai bien fais: A = 2 avec 3 avec 5 avec 8 avec 13


OR, c'est un ou logique, il retourne TRUE dès que une seule des conditions est remplie. Je n'ai jamais essayé ce que tu veux faire avec VB.net, mais la tradition microsoftienne avec des comparaisons logiques entre entiers c'est de dire que:

en VB6 et les versions précédentes et VBA : -1 et tout nombre positif vaut TRUE et rien d'autre. O vaut FALSE et rien d'autres.

en VB.net : 1 et tout autre nombre positif vaut TRUE et rien d'autres. 0 vaut false et rien d'autre.

Regarde dans ton aide pour AND, ANDALSO, ORALSO

Déjà le code est t-il correcte ?!
C'est comme ça qu'il faut faire ?


Rien compris à la question. Si tout ton bataclan c'est pour déterminer les icônes à afficher dans une Msgbox ou une MessageBox, normalement il suffit juste de mettre des + en chaque constante et VB se charge du reste.

Avant que tu ne pose la question:

MsgBox : Fonction VisualBasic conservée pour maintenir la compatibilité avec les versions précédentes de VB. Ne peut pas être utilisée ailleurs que dans programmes VB

MessageBox : Classe de Framework .net. Peut être utilisée dans n'importe quel langage compatible avec le Framework.

Les valeurs des constantes ne sont pas toujours les mêmes pour l'une et l'autre. Ils en parlent dans l'aide.

Et non, ouvrir l'aide ne donne pas la peste.

Bonjour,

J'ai modifié ta première procédure pour avoir ceci:

Sub Main()
        Dim A As Integer = 0
        A = 2
        Console.WriteLine(A)
        A = A Or 3
        Console.WriteLine(A)
        A = A Or 5
        Console.WriteLine(A)
        A = A Or 8
        Console.WriteLine(A)
        A = A Or 12
        Console.WriteLine(A)
        Console.ReadLine()
    End Sub


et j'ai obtenu ces résultats:
A A Or 3> a = 3
A A Or 5> a = 7
A A Or 8> a = 15
A A Or 12> a = 15

Donc ton "Avec" est pour le moins imprécis
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
53
Salut

attention c'est de l'algebre de bool
2 or 3 = 3

base de or 0 or 0 = 0
0 or 1 = 1
1 or 0 = 1
1 or 1 = 1

2 -> 0010
3 -> 0011
------
on applique le or entre chaque bits en commençant de droite vers la gauche
0 or 1 = 1
1 or 1 = 1
0 or 0 = 0
0 or 0 = 0

ce qui donne 0011 = 3

10 or 10 = ?
10 1010
1010
---------
1010 = 10
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Oui, il s'agit bien d'un Or numérique, mais il faut se le représenter sous forme de puissance de 2 pour le comprendre parfaitement :

1, c'est 2^0
2, c'est 2^1
4, c'est 2^2
8, c'est 2^3
etc

Pour construire un chiffre, 19 par exemple, on le décompose en puissance de 2 :
19, c'est 16 + 2 + 1, c'est à dire 2^4 + 2^1 + 2^0

Si on représente les puissances de 2 utilisées de la droite vers la gauche (norme), on obtient : 10011

Si on fait "19 Or 5", on fait un Or logique entre les bits de :
10011 (19)
00101 (5)
-----
10111 (23)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Complémentairement, si on veut savoir si le chiffre est utilisé dans la décomposition des puissances de 2 d'un autre chiffre, il faut faire un And :

5 est-il utilisé dans la décomposition en puissance de 2 de 19 ?
00101 (5)
10011 (19)
-----
00001 (1)
Le résultat ne donne pas 5 : le 5 ne figure donc pas dans cette décomposition

3 est-il utilisé dans la décomposition en puissance de 2 de 19 ?
00011 (3)
10011 (19)
-----
00011 (3)
Le résultat donne 3 : le 3 figure donc dans cette décomposition

En VB :
Si (Y And X) = X, c'est que X est utilisé dans la décomposition de Y
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

Bonsoir

Un grand merci pour votre précieuse aide
Faut que je mette ça en pratique.
A+

Pendant le mode pas à pas, tu peux aussi utiliser la fenêtre exécution pour afficher ou modifier des variables ou des objets à la volée.

?variable --> affiche la valeur de la variable dans la fenêtre.

variable = 7 --> assigne la valeur 7 à une variable de type Integer.

MaListView.Items(7).Text = "blabla" --> change le texte d'un item d'une listview.

Ou même t'en servir de calculatrice :
?3 + 7 --> affiche 10
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013

A ouais, on peut faire ça en temps réel

Donc en gros je peut changer les valeur en temps réel pour
voir le comportement du programme, c'est bien ça ?