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

MFC Discussion :

GetLastError()


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut GetLastError()
    Ou trouver la correspondance de la valeur renvoyée par GetLastError() ?
    Merci

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Msdn bien sur ... Tape GetLastError et dans les remarques va voir "System Error Codes"

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut
    GetLastError est il uniquement consacré aux threads??

  4. #4
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    non

    sinon pour voir l'erreur rapidement, tu fais dans VC :

    Tools => Error Look up, tu tappes le n° de l'erreur et zouuuu
    il y a du linge sur la corde à linge

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut
    ok chef. Mais est ce que ce code correspond uniquement aux renvois de GetLastError() ????

  6. #6
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    est ce que look up error permet de voir decodé les n° de getlasterror => oui

    est ce que look up error permet de voir decodé d'autre code erreur => je sais pas mais je pense pas
    il y a du linge sur la corde à linge

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Tu veux parler sans doute de CommDlgExtendedError(VOID); ?
    Ce n'est pas à proprement une erreur , donc il faut malheureusement faire ton propre code à la main (comme le dit mon confrère du salon d'à côté !)
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut
    exactement. vous m avez bien aidé les gars c'est bien gentil.

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Bon, j'ai trouvé et ça rique d'être utile à beaucoup de monde :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    //
    //  FUNCTION: ProcessCDError(DWORD) 
    //
    //  PURPOSE: Processes errors from the common dialog functions.
    //
    //  COMMENTS:
    //
    //        This function is called whenever a common dialog function
    //        fails.  The CommonDialogExtendedError() value is passed to
    //        the function which maps the error value to a string table.
    //        The string is loaded and displayed for the user. 
    //
    //
    void ProcessCDError(DWORD dwErrorCode, HWND hWnd)
    {
       WORD  wStringID;
       TCHAR  buf[MAX_PATH];
     
       switch(dwErrorCode)
          {
    	 case CDERR_DIALOGFAILURE:   wStringID=IDS_DIALOGFAILURE;   break;
    	 case CDERR_STRUCTSIZE:      wStringID=IDS_STRUCTSIZE;      break;
    	 case CDERR_INITIALIZATION:  wStringID=IDS_INITIALIZATION;  break;
    	 case CDERR_NOTEMPLATE:      wStringID=IDS_NOTEMPLATE;      break;
    	 case CDERR_NOHINSTANCE:     wStringID=IDS_NOHINSTANCE;     break;
    	 case CDERR_LOADSTRFAILURE:  wStringID=IDS_LOADSTRFAILURE;  break;
    	 case CDERR_FINDRESFAILURE:  wStringID=IDS_FINDRESFAILURE;  break;
    	 case CDERR_LOADRESFAILURE:  wStringID=IDS_LOADRESFAILURE;  break;
    	 case CDERR_LOCKRESFAILURE:  wStringID=IDS_LOCKRESFAILURE;  break;
    	 case CDERR_MEMALLOCFAILURE: wStringID=IDS_MEMALLOCFAILURE; break;
    	 case CDERR_MEMLOCKFAILURE:  wStringID=IDS_MEMLOCKFAILURE;  break;
    	 case CDERR_NOHOOK:          wStringID=IDS_NOHOOK;          break;
    	 case PDERR_SETUPFAILURE:    wStringID=IDS_SETUPFAILURE;    break;
    	 case PDERR_PARSEFAILURE:    wStringID=IDS_PARSEFAILURE;    break;
    	 case PDERR_RETDEFFAILURE:   wStringID=IDS_RETDEFFAILURE;   break;
    	 case PDERR_LOADDRVFAILURE:  wStringID=IDS_LOADDRVFAILURE;  break;
    	 case PDERR_GETDEVMODEFAIL:  wStringID=IDS_GETDEVMODEFAIL;  break;
    	 case PDERR_INITFAILURE:     wStringID=IDS_INITFAILURE;     break;
    	 case PDERR_NODEVICES:       wStringID=IDS_NODEVICES;       break;
    	 case PDERR_NODEFAULTPRN:    wStringID=IDS_NODEFAULTPRN;    break;
    	 case PDERR_DNDMMISMATCH:    wStringID=IDS_DNDMMISMATCH;    break;
    	 case PDERR_CREATEICFAILURE: wStringID=IDS_CREATEICFAILURE; break;
    	 case PDERR_PRINTERNOTFOUND: wStringID=IDS_PRINTERNOTFOUND; break;
    	 case CFERR_NOFONTS:         wStringID=IDS_NOFONTS;         break;
    	 case FNERR_SUBCLASSFAILURE: wStringID=IDS_SUBCLASSFAILURE; break;
    	 case FNERR_INVALIDFILENAME: wStringID=IDS_INVALIDFILENAME; break;
    	 case FNERR_BUFFERTOOSMALL:  wStringID=IDS_BUFFERTOOSMALL;  break;
     
    	 case 0:   //User may have hit CANCEL or we got a *very* random error
    	    return;
     
    	 default:
    	    wStringID=IDS_UNKNOWNERROR;
          }
     
       LoadString(NULL, wStringID, buf, sizeof(buf));
       MessageBox(hWnd, buf, NULL, MB_OK);
       return;
    }
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut
    otes moi d un doute , ce n'est pas toi qui a developpé tout ca non ???

  11. #11
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Oh non, je ferais beaucoup pour toi mais quand même pas tout ça .
    Je l'ai trouvé dans MSDN mais je viens de voir que c'est incomplet, il faut lui ajouter un fichier qui donne les correspondances avec les chaînes. Et en plus, elles sont en anglais et elles correspondent à un cas qui n'est pas le tien ; mais c'est déjà un début. Je te l'envoie en mp.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  12. #12
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut
    ok merci bien j vai voir ca

  13. #13
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut c'est le confrere d'a cote qui revient :
    je viens de tester ca pour les fonctions avec getlasterror() le message est en francais dans le texte et ça fonctionne :
    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
     
    // je le fais Exprès de faire une erreur le monde à l'envers 
    HANDLE hFile = ::CreateFile("portelawak", GENERIC_READ|GENERIC_WRITE,
    			FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
    			NULL);
     
    	LPVOID lpMsgBuf;
    	FormatMessage( 
        FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM | 
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        GetLastError(),
        0, // Default language
        (LPTSTR) &lpMsgBuf,
        0,
        NULL 
    	);
    	// Process any inserts in lpMsgBuf.
    	// ...
    	// Display the string.
    	AfxMessageBox((LPCTSTR)lpMsgBuf, MB_OK | MB_ICONINFORMATION );
    	// Free the buffer.
    	LocalFree( lpMsgBuf );

  14. #14
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par farscape
    salut c'est le confrere d'a cote qui revient :
    je viens de tester ca pour les fonctions avec getlasterror() le message est en francais dans le texte et ça fonctionne :
    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
     
    // je le fais Exprès de faire une erreur le monde à l'envers 
    HANDLE hFile = ::CreateFile("portelawak", GENERIC_READ|GENERIC_WRITE,
    			FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
    			NULL);
     
    	LPVOID lpMsgBuf;
    	FormatMessage( 
        FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM | 
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        GetLastError(),
        0, // Default language
        (LPTSTR) &lpMsgBuf,
        0,
        NULL 
    	);
    	// Process any inserts in lpMsgBuf.
    	// ...
    	// Display the string.
    	AfxMessageBox((LPCTSTR)lpMsgBuf, MB_OK | MB_ICONINFORMATION );
    	// Free the buffer.
    	LocalFree( lpMsgBuf );
    <complément>
    C'est exactement (à 2 3 trucs près) ce que fait le error lookup de vc.
    la langue par défaut du message est celle de l'os
    </complément>

  15. #15
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut
    MFC ??? je deteste....

  16. #16
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par elodie escande
    ca a l air d etre du MFC ca. Je déteste.

    Elle est ou l'erreur ds le code deja .....
    Nop. Pas de MFC la dedans. rien que des appels directs à Win32. (CreateFile, GetLastError(), FormatMessage).
    Le code erreur c'est evidemment GetLastError()

  17. #17
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut
    GetLastError() ca renvoie quoi dans cet exemple si au lieu du nom bidon de CreateFile je me un fichier qui existe (COM1 p.ex).
    Ca memorise l'ancienne erreur ou pas??????
    Pcq moi dans ce cas j ai toujours 6 que l operation soit bonne ou pas
    (fichier existant ou pas)
    La correspondance avec l 'outil error Lookup est en outre loin d'etre bonne cher messieurs.

  18. #18
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    en general c'est pas comme ça qu'il faut proceder je suis alle un peu vite:
    j'ouvre un fichier on me retourne un handle je me pose la question le handle est valide ? dans le cas present hfile <> de INVALID_HANDLE_VALUE ?
    si c'est pas bon je regarde avec getlasterror () pour voir le pb
    sinon à priori getlasterror renvoie 0 .
    dans le header error.h
    tu as #define ERROR_INVALID_HANDLE 6

  19. #19
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    bonjour ,j'en rajoute une petite couche
    pour ouvrir le com (ton precedent post)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    char buffer[ 20 ];
    // port number 0: com1 1:com2 etc...
    wsprintf( buffer, "\\\\.\\COM%d", port_number + 1 );
    // fonctionne aussi
    //wsprintf( buffer, "COM%d", port_number + 1 );
     
    HANDLE result = CreateFile( buffer,
                             GENERIC_READ | GENERIC_WRITE,
                             0,
                             NULL,
                             OPEN_EXISTING,
                             FILE_FLAG_OVERLAPPED,
                             NULL );

  20. #20
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 101
    Points : 48
    Points
    48
    Par défaut
    tu na pas compris la question en fait (oublie le com g pa voulu tout ecrire).
    question 1:
    Que renvoie GetLastError() exactement?
    2 tests. 1-le port com est pas ok(mauvaise chaine) --> getlasterror = 6
    2- le port com est ok --> getlasterror = 6.
    alors ke getlasterror = 0 si le code est bon au premier coup?????
    Que renvoie GetLastError() exactement?

    question 2:La correspondance avec l 'outil error Lookup est en outre loin d'etre bonne. le code renvoyer par ta fonction n'est pas le meme que l 'outil error Lookup

Discussions similaires

  1. à propos de "l'idiome GetLastError"
    Par r0d dans le forum C++
    Réponses: 51
    Dernier message: 30/06/2010, 14h15
  2. Réponses: 4
    Dernier message: 08/09/2008, 11h06
  3. Valeur retournée de GetLastError = 0 ?
    Par courantjet dans le forum Windows
    Réponses: 2
    Dernier message: 30/07/2007, 10h49
  4. [MFC][C++] errno et/ou GetLastError ?
    Par matazz dans le forum MFC
    Réponses: 3
    Dernier message: 12/05/2005, 13h50
  5. Fonction GetLastError()
    Par annedjomo dans le forum MFC
    Réponses: 14
    Dernier message: 09/03/2005, 09h13

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