Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Winerror_h

Winerror_h

19389_size.png
Piccolo programma d'utilità per Windows che agevola l’interpretazione dei messaggi di errore elencati nel file di include winerror.h. In pratica, un mini database che contiene gran parte delle informazioni di quel file di include (le costanti e i loro valori) e che impiega la funzione FormatMessage() di Win32 per ricavare le stringhe descrittive abbinate.













Come funziona?

Usare Winerror_h è banalmente banale:


  • Si lancia il programma.

  • Si sceglie il tipo di descrittore che si intende cercare, usando gli appositi radio button (può essere un valore numerico in formato decimale o esadecimale, o una stringa che rappresenta il nome d’una delle millemila costanti usate da Windows per segnalare i propri errori).

  • Si scrive nel campo “descrittore” il valore del descrittore da cercare, assicurandosi che sia del tipo giusto (immettere un numero se si è attivato il radio button “Costante”, o immettere il nome di una costante se si è attivato il radio button “Esadecimale”, o altre cose del genere non ha senso e potrebbe dare risultati fuorvianti).

  • Si preme Invio o si fa click sul pulsante “Ok”.

  • Si leggono i risultati e ci si giova di essi.



Quali sono le opzioni disponibili?

Winerror_h dispone di due opzioni distinte:

  • usare il programma

  • non usare il programma



Categoria: Utility / C
Piattaforma:

Downloads: 577
Rating: (0 voti)
Data: 05/08/2015
Download

A proposito dell'autore

Amatore, autodidatta dai tardi anni '90. Prime esperienze in HyperTalk. Successivamente, C con qualche infarinatura di C++.

Aggiungi un commento

Inserisci il tuo commento qui
Esegui il login oppure registrati per inviare commenti
  • Una richiesta: chi vota può cortesemente aggiungere due righe di commento per motivare la propria valutazione? Nessun obbligo, neppure  implicito, ma commenti di questo tipo mi sarebbero utili per tentare qualche passo avanti. Grazie.
  • Non ho votato il programma, neanche testato, non sono un professore né tanto meno un programmatore, ma se ti può essere utile eccoti qualche osservazione: in molti programmi hai infilato roba in un file main.h, ma penso che non sia prassi fare ciò, nel file main.cpp dovrebbe in teoria andarci la funzione principale mentre il resto in file con nomi diversi, nomi che specifichino il loro contenuto; in questo caso ad esempio sarebbe stato meglio chiamare quell'header error.h o qualcosa di simile. Un'altra cosa che forse stona un po' è il mix tra italiano e inglese nei nomi. Il file risorse.h è incluso in main.h però non viene usato, sarebbe stato meglio forse includerlo nel main.cpp, e non hai inserito il solito preambolo degli header per evitare che venga duplicato il codice. n nelle funzioni Cerca* del main.c lo usi come flag quindi forse un bool potrebbe essere più appropriato. Ultimo, non so quanto una persona sia disposta a scaricare un eseguibile per vedere una descrizione di errori di windows, forse un qualcosa web sarebbe stato più carino.
  • Fatto, ho modificato un po' di cose. Ora purtroppo non c'è più corrispondenza tra i sorgenti che si possono consultare nel source viewer (aggiornati) e quelli che ci sono nello zip da scaricare (non aggiornati), ma direi che siccome le differenze sono più che altro cosmetiche va bene così. Ah, ho controllato "unsigned long n"... non lo uso come flag, ma come contatore, quindi va bene quel tipo lì.
    Sulla disponibilità a scaricare un eseguibile per un'utilità così poco rilevante, che dire... questo programmino l'ho fatto per me stesso e lo uso diffusamente perché mi dà in quattro e quattr'otto una prima idea di cosa significhi proprio quel numerino misterioso che nel debugger salta fuori inatteso da una chiamata a una funzione di win32, senza bisogno di impazzire con il megalitico MSDN (come prima opzione, poi se serve approfondire ovviamente vado a cercare sulle "cose serie"; tante volte però mi basta l'informazione breve). Se hai notato, però, il programma permette di selezionare una o l'altra tra due opzioni: 1. usare il programma; 2. non usare il programma... :D
    Ancora grazie per la disponibilità, ho apprezzato.

  • Quello che intendevo dire è che

    int n = 0;

    for(...)  if(...)    ++n;if(n == 0) ...


    lo puoi sostituire con


    bool flag = false;for(...)  if(...)    flag = true;if(!flag) ...


    alla fine non credo che ci siano miglioramenti di spazio o tempo, sicuramente non apprezzabili.Le window con le winapi sono molto brutte, mi verrebbe da consigliarti qualche altra libreria se non fosse che anche quelle sono un po' bruttine in C.
  • Sì, altre volte ho fatto così, con la tecnica del preimpostare il flag e poi controllare dopo il ciclo se è stato cambiato. Questa volta, non so perché, m'è venuto spontaneo ficcarci questa "n". Direi che (a parte i tre byte "sprecati") sono equivalenti e non è né più facile né più difficile. Tra l'altro (correggimi se dico una scemenza), non è che il compilatore a volte per "allineare" gli spazi in memoria alloca comunque della memoria in più? Tipo che alloca un int a 32 o a 16 bit (a seconda del SO e, forse, dell'hardware) anche se uno chiede un char da 8 bit? Quando provavo a programmare in System 7 ricordo d'aver letto un manuale dove ogni tre per due comparivano delle variabili chiamate per praticità "filler", e l'autore pareva avere una vera e propria fissazione per questa storia. C'è da dire anche che Windows usa BOOL che non è un bool da 8 bit, ma un intero da 32 (infatti certe API lo usano proprio come se fosse un intero, restituendo codici di errore che possono non essere né 0 né 1 in una variabile BOOL)! Boh? Quando si va su questi particolari ho un po' di confusione in testa.
  • Sì, probabilmente in termini di memoria è lo stesso. Sulle performance invece forse è meglio, bisogna vedere se c'è differenza tra incremento e assegnazione, comunque nel tuo caso sicuramente non è qualcosa di apprezzabile.
  • Che brutta cosa, non si possono editare i commenti. Riscritto su pastebin -> http://pastebin.com/qF8u1j7j
  • Grazie per le osservazioni. Alcune delle cose che hai elencato le ho fatte intenzionalmente, altre mi sono sfuggite perché (stupidamente) ho pensato "vuoi che mi sfugga qualcosa in un programma tanto piccolino e banale"? Infatti... :)
    Ora che mi hai "costretto" a ricontrollare ho anche visto che il modello includeva commctrl.h e richedit.h che non ho provveduto a rimuovere anche se non servono. A voler ben vedere, anche windows.h non serve nel main.h ma solo in main.c...
    Hai ragione. Do una bella ricontrollata a tutto in funzione dell'ordine, perché son stato un po' più sciatto del dovuto.