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 :

Problème de lecture registre avec RegEnumKeyEx


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut Problème de lecture registre avec RegEnumKeyEx
    Bonjour

    A propos de la fonction RegEnumKeyEx
    Citation Envoyé par MSDN
    Return Values
    If the function succeeds, the return value is ERROR_SUCCESS.

    If the function fails, the return value is a system error code. If there are no more subkeys available, the function returns ERROR_NO_MORE_ITEMS.

    If the lpName buffer is too small to receive the name of the key, the function returns ERROR_MORE_DATA.
    J'ai donc construit mon code de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        i=0
        strTmp=string(255,0)
        lRet = ERROR_SUCCESS
        While lRet <> ERROR_NO_MORE_ITEMS
            lRet = RegEnumKeyEx(lKey, i, strTmp, 255, 0, 0, 0, 0)
            ReDim Preserve strKeyList(i)
            strKeyList(i) = strTmp
            i = i + 1
        Wend
    Je me suis apperçu que la boucle While n'était jamais exécutée.
    Après quelques heures de réflexion intense, je me suis dit que la seule possibilité était que ERROR_SUCCESS=ERROR_NO_MORE_ITEMS. Alors pour vérifier, j'ai ajouté cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox ERROR_SUCCESS=ERROR_NO_MORE_ITEMS
    Et j'ai obtenu Vrai !

    D'où ma question, je mets quoi comme condition d'arrêt de ma boucle ?
    J'ai bien essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While lRet=ERROR_SUCCESS
    mais alors le programme passe une fois de trop dans la boucle.

    Cordialement,

    Mathieu Driesbach.

    PS : Je bosse avec VB6 et Windows NT4
    Un verre vide se plaint, un verre plein se vide ...

  2. #2
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    c'est quand même curieux que deux constantes différentes d'une même fonction aient la même valeur. tu a essayé de faire une comparaison de type binaire pour voir?

    enfin normalement ça change pas grand chose vue que ce sont des variables integer... sinon, essaye de récupérer l'erreur comme une string mais je doute que ce soit possible....


    salut
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut
    Bonjour.

    Merci d'avoir répondu ...

    J'ai trouvé une solution : je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While lRet = ERROR_SUCCESS
    comme condition de la boucle.
    La lecture supplementaire était dûe au fait que le retour de la lecture n'était pas contrôlé.
    J'ai rajouté ce contrôle et tout fonctionne correctement.

    N'empêche que c'est bizarre que ces constantes soient égales, ça fout en l'air la gestion des erreurs ...

    Cordialement,

    Mathieu Driesbach.
    Un verre vide se plaint, un verre plein se vide ...

  4. #4
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    en y repensant, tu à essayé:do
    '... ton code
    loop until lRet <>ERROR_SUCCESS

    normalement, il te fait une boucle en moins mais si initialement lret<> ERROR_SUCCESS alors, il te lira quand même le code (mais j'en doute vu ton cade)


    salut
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut
    Merci de ta participation.

    Finalement, des recherches plus poussées m'ont appris certaines choses :
    En fait la fonction renvoie bien la valeur entière qui correspond à la constante ERROR_NO_MORE_ITEMS d'après la MSDN (259).
    C'est la définition des constantes dans VB6 qui n'est pas bonne. J'ai redéfini les constantes qui m'intéressent (ERROR_SUCCESS et ERROR_NO_MORE_ITEMS, tout autre valeur provoque une sortie de l'application) et mon code fonctionne très bien, y compris la gestion d'erreur que j'avais mis en place au départ.

    Encore merci pour ton aide.

    Cordialement,

    Mathieu Driesbach.
    Un verre vide se plaint, un verre plein se vide ...

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

Discussions similaires

  1. Problème de lecture/écriture avec les sockets
    Par mrttlemonde dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 09/10/2009, 11h12
  2. Problème de lecture javadoc avec firefox sous linux
    Par Atatorus dans le forum Eclipse
    Réponses: 0
    Dernier message: 12/07/2009, 17h00
  3. problème de lecture xsl avec xml
    Par rhtlk dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/07/2009, 14h06
  4. Problème de lecture fichier avec std::getline
    Par marcootz dans le forum C++Builder
    Réponses: 13
    Dernier message: 15/05/2008, 15h42
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

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