Obtenir toutes les enumérations à partir d'une énumération multiple

BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013 - 4 mai 2012 à 15:45
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 4 mai 2012 à 20:38
Bonjour à tous,
j'ai une énumération multiple du type : Dim MonEnum as TraceOptions qui contient plusieurs énumérations (TraceOptions.DateTime or TraceOptions.Callstack....)
j'aimerais obtenir chaque énumérations de façon à effectuer un traitement du type :

              Select Case MonEnum
                    Case Is = TraceOptions.DateTime
                        ' MonEnum contient DateTime
                    Case Is = TraceOptions.Callstack
                        ' MonEnum contient Callstack
                End Select


le code ci-dessus ne marche pas, pouvez vous m'aider ?

3 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
4 mai 2012 à 19:12
Bonjour,

Pourquoi utiliser
Case Is = ...
Alors que
Case ...
suffit ?

Un message d'erreur?
Tu ne passes pas dans un des cas ?
As-tu regardé en pas à pas la valeur ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013
4 mai 2012 à 20:04
Bonjour NHenry, heu c'est une vielle habitude. J'ai toujours appris tous seul la programmation ou presque et donc je prends parfois de mauvaise habitude mais je me corrige.
J'ai finalement trouvé une solution mais sans utiliser la structure Select Case à cause de la méthode HasFlag que je n'ai pas réussi à insérer à l'intérieur du Select Case :

                If MonEnum.HasFlag(TraceOptions.LogicalOperationStack) Then ....
                If MonEnum.HasFlag(TraceOptions.DateTime) Then ....
                If MonEnum.HasFlag(TraceOptions.Timestamp) Then ....
                If MonEnum.HasFlag(TraceOptions.ProcessId) Then ....
                If MonEnum.HasFlag(TraceOptions.ThreadId) Then ...
                If MonEnum.HasFlag(TraceOptions.Callstack) Then ...
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
4 mai 2012 à 20:38
Bonjour,

A la place de la série de If, utilises plutot If ... ElseIf ... Then

Sinon, est-ce que ta variable MonEnum peut mixer plusieurs valeurs (non précisé dans ton énoncé) ?
Si oui, en effet, seul des If peuvent faire l'affaire, regardes aussi l'opérateur binaire And (Pas booléen, binaire).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
Rejoignez-nous