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

Visual C++ Discussion :

HRESULT User Friendly


Sujet :

Visual C++

  1. #1
    Membre confirmé Avatar de Thor Tillas
    Inscrit en
    Octobre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 113
    Par défaut HRESULT User Friendly
    Hello,

    Je me demandais s'il existait une possibilité, mise à part un méga switch, d'afficher un text à la place du code d'erreur HRESULT...

    Je sais que visual studio fourni un outil qui permet de le faire, il doit donc surement y avoir une liste à quelque part et surement qu'une petite fonction permet de l'atteindre... sinon je vais passer ma journée à taper des Merci d'avance pour vos réponses...

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    salut,

    j ai vu une classe qui a deja ce megaswitch sous code project au cas ou...

    mot clé : GetLastError()

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    J'ai cherché, je n'ai rien vu pour les HRESULT.

    Il y a des facilités pour les erreurs Win32, mais les HRESULT ne sont pas aussi bien définis, hélas.
    Il y a même une plage pour laquelle les valeurs peuvent se chevaucher selon les différentes interfaces... (deux HRESULT différents pour deux interfaces différentes peuvent voir la même valeur).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre confirmé Avatar de Thor Tillas
    Inscrit en
    Octobre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 113
    Par défaut
    En fait c'est assez simple...

    le code ci dessous devrait répondre aux questions, enfin j'espère... je l'ai trouvé à cette adresse : http://meat.net/2005/11/hresult-message/


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //pour le _com_error
    #include <comdef.h>
    //pour le HRESULT
    #include <windows.h>
     
    std::wstring HRToWS(HRESULT res)
    {
      std::wstring ws (_com_error(res).ErrorMessage());
      return ws;
    }
    Voilà en espérant que ca serve à quelqu'un d'autre

    @ZaaN : Je crois que je suis un peu boulet, mais j'ai pas trouvé ton lien... je voulais juste vérifier s'il y avait une autre solution... culture générale quoi. Si par hasard t'arrive à me donner un lien direct je pourrai y jeter un oeil et faire une petite synthèse dans ce post

  5. #5
    Membre confirmé Avatar de Thor Tillas
    Inscrit en
    Octobre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 113
    Par défaut
    Citation Envoyé par Médinoc
    ...
    Il y a même une plage pour laquelle les valeurs peuvent se chevaucher selon les différentes interfaces... (deux HRESULT différents pour deux interfaces différentes peuvent voir la même valeur).

    voilà pourquoi j'ai des messages qui correspondent pas forcément à mon erreur... genre j'ai pas de cassette dans la camera que je pilote à distance et l'erreur HRESULt que je recois correspond à : "No more connections can be made to this remote computer at this time because there are already as many connections as the computer can accept. "
    Je pensais que c'était le programmeur de l'api que j'utilise qui c'était planté dans ses retours de fonction...

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    En fait, le truc est assys primitif : La classe tente un FormatMessage() directement sur le HRESULT (il faut croire que Win32 implémente ça de base, puisque les HRESULT d'erreur ont toujours le bit de poits fort vrai, ce qui n'est jamais le cas des erreurs) et affiche un message plus générique en cas d'échec.

    C'est pour cela qu'il y a généralement une doc des différents HRESULT que peut retourner une fonction, puisqu'il n'y a rien qu'on puisse faire sans la liste complete (sauf retourner E_UNEXPECTED)...

    Normalement, il y a quelque part une liste de defines qui donne différents HRESULTs.
    Par contre, la valeur que tu as postée (0x80070001) n'existe pas dans les headers de Windows. Il est toutefois possible qu'elle soit définie quelque part dans les headers du SDK de ta caméra s'il y en a un...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Utilisation user friendly
    Par minisys dans le forum BIRT
    Réponses: 2
    Dernier message: 25/02/2011, 10h46
  2. recherche user friendly sur une table access
    Par vanessa2303 dans le forum IHM
    Réponses: 1
    Dernier message: 01/07/2008, 07h05
  3. Réponses: 2
    Dernier message: 23/05/2008, 18h13
  4. [Langage] MaJ d'une carte, user-friendly, sans retouche graphique
    Par jaybebop dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 10/05/2006, 10h27

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