IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Filtrage sur une chaîne de 128 Bits


Sujet :

VB 6 et antérieur

  1. #1
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    927
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 927
    Points : 312
    Points
    312
    Par défaut Filtrage sur une chaîne de 128 Bits
    Bonjour à tous,

    J'ai un petit souci, je reprend un code existant pour le modifier.

    Je récupère des informations d'une supervision pour m'indiquer les modules présent dans l'armoire.
    Ce que je récupère c'est une String formant au maximum 4 Octet.

    Par exemple "FFFFFFFF" pour 32 modules.

    Dans le code actuel cette valeur est utilisé en Long puis filtré dans une boucle pour faire apparaître l’état des 31 premiers modules le Long étant sur 4 bits signé on ne peut par cette méthode filtré le 32éme bits puisqu'il sont de la capacité d'un Long. Le 32 éme est donc traité avant.

    Bon déjà cela m’embête sa, mais surtout que maintenant je dois non plus avoir 32 modules mais 128 modules.

    Je sais pas si je suis suffisamment clair.

    Je donne un exemple:

    La supervision m'envoie pour les 128 modules
    4 String formant les 32 bits.
    par exemple:
    Bloc 1: FFFFFFFF Donc -> 32 module présent dans ce bloc
    Bloc 2: 5 ICI -> le 33eme et 35eme module est présent dans ce bloc
    Bloc 3: 1FF ICI -> les modules 65 à 74 sont présents
    Bloc 4: 0 ICI -> aucun modules de plus

    Ce qui reconstitue une chaîne complète de:

    00000000000001FF00000005FFFFFFFF

    Ce que je voudrais c'est a partir de cette chaîne, que j'arrive à constituer, faire un filtrage dans une boucle pour vérifie l’état de chaque bits.

    Merci de votre aide ou idée

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Je suis pas bien sûr d'avoir compris ta question, mais si c'est pour connaitre le statut des 128 bits, un truc du style devrait déjà te mettre sur la piste je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ch = "00000000000001FF00000005FFFFFFFF"
    For i = 1 To Len(ch)
      carac = Mid(ch, Len(ch) + 1 - i, 1)
      Debug.Print 4 * (i - 1) + 1, &H1 And Val("&H" & carac)
      Debug.Print 4 * (i - 1) + 2, &H2 And Val("&H" & carac)
      Debug.Print 4 * (i - 1) + 3, &H4 And Val("&H" & carac)
      Debug.Print 4 * (i - 1) + 4, &H8 And Val("&H" & carac)
    Next i
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  3. #3
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    927
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 927
    Points : 312
    Points
    312
    Par défaut
    Je pourrais éventuellement me servir de cette solution, merci.

    Toutefois cela m'oblige à faire une boucle dans une boucle.

    La 1ère boucle pour récupérer les caractères de 4 bits.
    Suivi de la 2éme boucle pour décomposer ce caractère afin d’analyser l’état du bits et d'effectuer le traitement nécessaire.

  4. #4
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    927
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 927
    Points : 312
    Points
    312
    Par défaut
    Solution retenue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    rectInst = "00000000000001FF00000005FFFFFFFF"
    For z = 1 To Len(rectInst)
            CaracInst = Mid(rectInst, Len(rectInst) + 1 - z, 1) 'Module installé
            CaracLog = Mid(RectLogged, Len(RectLogged) + 1 - z, 1)'Module logué
     
            For Y = 1 To 4
     
                Select Case Y
                    Case 1:
                        ValInst = &H1 And val("&H" & CaracInst)
                        ValLog = &H1 And val("&H" & CaracLog)
                    Case 2:
                        ValInst = &H2 And val("&H" & CaracInst)
                        ValLog = &H2 And val("&H" & CaracLog)
                    Case 3:
                        ValInst = &H4 And val("&H" & CaracInst)
                        ValLog = &H4 And val("&H" & CaracLog)
                    Case 4:
                        ValInst = &H8 And val("&H" & CaracInst)
                        ValLog = &H8 And val("&H" & CaracLog)
                End Select
     
               'Traitement
                -
                -
                -
                -
                -
     
           Next Y
     
       Next z

  5. #5
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonsoir,
    En faisant simple avec la librairie vb6i :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ch="00000000000001FF00000005FFFFFFFF": ret= ConvertBaseZ(ch,16,2)
    Cela fonctionne aussi avec des valeurs beaucoup plus grandes que 1021 comme dans ce cas

  6. #6
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    927
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 927
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par DarkVader Voir le message
    Bonsoir,
    En faisant simple avec la librairie vb6i :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ch="00000000000001FF00000005FFFFFFFF": ret= ConvertBaseZ(ch,16,2)
    Cela fonctionne aussi avec des valeurs beaucoup plus grandes que 1021 comme dans ce cas
    Merci pour l'info, je note sa.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Turbo Pascal] Exercice sur une chaîne de caractères
    Par mah00 dans le forum Turbo Pascal
    Réponses: 35
    Dernier message: 10/01/2010, 14h47
  2. Test sur une chaîne de caractères
    Par ThunderBolt_ dans le forum Général VBA
    Réponses: 4
    Dernier message: 27/06/2007, 07h37
  3. recherche sur une chaîne de caractères
    Par bogsy15 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/07/2006, 13h01
  4. Tri sur une chaîne de caractères contenant des nombres
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2006, 12h52
  5. Requête sur une chaîne de caractères
    Par Hakunamatata dans le forum Langage SQL
    Réponses: 9
    Dernier message: 02/04/2006, 19h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo