begin process at 2013 05 22 14:15:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > SIGNIFICATION DES CODES D'ERREUR DE L'API WIN32 - UTILISATION D'UNE TLISTVIEW

SIGNIFICATION DES CODES D'ERREUR DE L'API WIN32 - UTILISATION D'UNE TLISTVIEW


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :Erreur, api32, SysErrorMessage, ListView, OnCompare Niveau :Débutant Date de création :12/10/2007 Vu / téléchargé :8 782 / 530

Auteur : japee

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Les différents messages d'erreur Win32 sont présentés dans une ListView avec tri croissant/décroissant alphabétique et numérique.

Suite à une question du forum sur l'interprétation des codes d'erreur Win32, je me suis dit que c'était une excellente occasion de réviser mon TLisView, en particulier un point auquel je ne m'étais pas encore intéressé, le tri.

Il s'agit donc presque autant d'une espèce de didacticiel sur l'utilisation d'un TListView que d'une antisèche à garder à portée de clic.

J'ai abondammant commenté le code relatif au tri (évènement OnCompare déclenché par ColomnClick). N'hésitez pas à me signaler toute amélioration possible, dans la mesure où les solutions utilisées sont le fruit d'une réflexion personnelle, et donc certainement perfectibles.

Un grand Merci à la fonction SysErrorMessage qui accomplit l'essentiel du travail.

Source


 Conclusion

Garanti compilable sous D4.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture DEPLACER LES ITEMS D'UNE LISTBOX VERS UNE AUTRE PAR DRAG AND...
Source avec Zip Source avec une capture DÉMINEUR UTILISANT UNE TDRAWGRID ET AVEC LEQUEL ON PEUT TRIC...
Source avec Zip Source avec une capture CONVERSION LITTÉRALE D'UN NOMBRE ENTIER OU FLOTTANT
Source avec Zip Source avec une capture TPULSEBUTTON - RÉPÉTITION PROGRESSIVE D'UN EVENT PENDANT ONK...
Source avec Zip Source avec une capture PUCE S'AJUSTANT EN FONCTION DE LA LARGEUR D'UN LABEL

 Sources de la même categorie

Source avec Zip Source avec une capture AFFICHER LES OBJECTS DE WINDOWS EXPLORER DANS UN WEBBROWSER par happy05
Source avec Zip ÉJECTER LE CD-ROM par happy05
Source avec Zip Source avec une capture KINECT TEST V1 par FFCAST
Source avec Zip DÉCOUPER UNE FENÊTRE par gta126
Source avec Zip TRANSCRIRE UN FICHIER OPEN FINANCIAL EXCHANGE (OFX) EN FICHI... par jeffem

 Sources en rapport avec celle ci

Source avec Zip LISTVIEW TRIÉE QUAND ON CLIQUE SUR L'ENTÊTE, COULEUR DIFFÉRE... par bubulemaster
RÉELS ET RÉALITÉ par Kenavo
Source avec Zip LA LISTE DES ERREURS DU BDE par abdousoft
Source avec Zip Source avec une capture EVITER LA FENETRE ERREUR JPEG #41 INTEGRE A TPICTURE par cirec
Source avec Zip Source avec une capture [VCL] TERRORMANAGER, GEREZ FACILEMENT VOS MESSAGES D'ERREUR ... par f0xi

Commentaires et avis

Commentaire de Jean_Jean le 12/10/2007 23:00:55

Bj Japee,
La simplicité de tes codes sont un régal.
C'est un source qui est utile pour les débug et mises au point!
Et SysErrorMessage n'utilise pas les ListView, alors t'a eu 1 bonne idée.
Bien à toi

Commentaire de Caribensila le 14/10/2007 00:34:18

Jolie démonstration qui prouve qu'on peut encore enrichir la DB de CS sans aller chercher midi à quatorze heures.

Elégant et concis.
Tout Japee, quoi...
Merci.

Commentaire de cantador le 15/10/2007 11:08:00 administrateur CS

j'ai placé ton soft dans un menu de Delphi..
Intéressant aussi est le traitement de la ListView qui ouvre d'autres horizons.
beau travail Japee.

Commentaire de zouriteman le 15/10/2007 18:12:01

Travail MONUMENTAL !! 671 codes recencés et listés ! Et Ultra-pratique à utiliser .
Toutefois, quelques questions
a) Il y a des trous dans la numérotation ( dernier code 6118 ) , par exemple au début 35 et 37 ; cela signifie t il que ces codes n'existent pas , ou que "JAPEE" les a oubliés ?
b) Question subsidiaire : Y a t il de nouveaux codes qui apparaissent avec les versions récentes de WINDOWS ( de Win95  vers Win98 puis WinXP puis Vista , ou des versions spécifiques : WinNT , Win2000 SERVER , Win 64 bits) ?
c) les codes désignés "non documentés" : qu'en est-il en réalité ?
.......

Commentaire de zouriteman le 15/10/2007 18:46:18

Ma curiosité n'a pas pu attendre une réponse de quelqu'un ; j'ai donc modifié le programme de Jappee pour voir s'il y avait d'autres codes. Réponse OUI OUI :
J'en ai trouvé 1734 supplémentaires ; voci mes modifs ( compilé avec DELPHI5-PRO sous WinXP)
======= (dans TForm1 )
  public
    { Déclarations publiques }
    TERR : array[0..9999] of byte ;    // Ajout G.CHABANT 15/10/2007
  end;
======= (début de ListErrors )
procedure TForm1.ListErrors;
var
  I , J , XDIF : Integer;
  S: string;
begin
  // Ajout G.CHABANT 15/10/2007
  for I := 0 to 9999 do begin
    TERR[I] := 0 ;
  end ;
  //.....
==========
========== (fin de ListErrors )
    // Ajout G.CHABANT 15/10/2007
    XDIF := 0 ;
    for J := 0 to 9999 do begin
       if TERR[J] = 0 then begin
          S := EmptyStr ;  //**** Attention, la Chaine S n'est peut-etre pas ré-initialiséee
          S := SysErrorMessage(J);
          if S <> EmptyStr then begin
               inc(XDIF) ;
               with Add do begin
                   Caption := 'X' + IntToStr(XDIF) ;
                   SubItems.Add(IntToStr(J));
                   S := StringReplace(S, #13#10, '', [rfReplaceAll]);
                   SubItems.Add(S);
               end;
          end ;
       end ;
    end ;
    if XDIF > 0 then begin
       ShowMessage('Nombre de SysError non recensés = ' + IntToStr(XDIF) ) ;
    end ;
    //.....

    EndUpdate;
  end;
end;
==========

Commentaire de zouriteman le 15/10/2007 19:03:19

euh, j'ai omis de signaler une autre modif ( en milieu de ListErrors)
=============
        { On récupère sa signification avec la fonction SysErrorMessage }
        // Ajout G.CHABANT 15/10/2007
        J := ArrErrorCodes[i] ;
        if (J >= 0) and (J <= 9999) then begin
              TERR[J] := 1 ;
        end ;
        //......
        S := SysErrorMessage(J);
        { SysErrorMessage retourne parfois une chaîne vide }

=============

Commentaire de japee le 17/10/2007 20:59:57 administrateur CS

Merci à tous les 5.

Quand je serai dans le doute existentiel (genre dois-je m'acharner à continuer d'essayer de progresser avec Delphi), je reviendrai sur cette page où je puiserai une force nouvelle :-)

Zouriteman, bien vu :
Le nombre de messages d'erreur varie considérablement d'une version à l'autre de Delphi et de Windows.
D'ailleurs si tu avais élargi un peu ta boucle, tu en aurais trouvé d'autres (Delphi4_pro et XP : 2661)... :p

Je vais néanmoins en rester là, pour plusieurs raisons :

- les messages ramenés par SysErrorMessage ne semblent pas tous correspondre à un message d'erreur (regarde bien la liste générée),
- ceux que j'utilise sont des constantes déclarées dans Windows.pas de Delphi4 pro et sont donc utilisables avec toute version ultérieure et à partir de Win9x,
- ils me semblent suffisants pour la plupart des erreurs courantes et même beaucoup plus,
- pour résumer, compte tenu de la disparité des versions de Windows encore largement en service (9x, 2000, XP, Vista), il vaut mieux se limiter à une liste d'erreurs reconnue par tous les systèmes.

De plus, en récupérant ces messages dans une boucle, la constante n'est pas retournée, donc la première colonne de ma TListView ne sert plus à grand chose, et comme on peut éventuellement se passer de la troisième, ma ListView devient inutile, et tout mon didactitiel sur le tri est perdu par la même occasion. C'est pas ça que tu veux, dis ? (lol)

Bon, je fais un break et je reviens pour quelques explications supplémentaires.

A plus.

Commentaire de Caribensila le 17/10/2007 21:47:04


Eh ouais...

Le doute existentiel ne doit pas reléguer la nécessité de se sustenter, hein, Japee?  ;)

Commentaire de japee le 17/10/2007 21:47:51 administrateur CS

J'ai donc testé dans plusieurs cas de figure : Delphi 4 pro, Delphi 6 Entreprise, Delphi 7 Entreprise pour la compilation, et Windows 98 SE, Windows XP Pro et Windows Vista personnel pour les OS.

Pour effectuer les tests, j'ai remplacé la procedure initiale par celle-ci  :

procedure TForm1.ListErrors;
var
  i: Integer;
  S: string;
  Compteur: Integer;
begin
  Compteur := 0;
  StatusBar1.SimpleText := '';
  with ListView1.Items do
  begin
    Clear;
    BeginUpdate;
    for i := 0 to 20000 do  // on prévoit large
    begin
      S := SysErrorMessage(i);
      if S <> EmptyStr then
      begin
        S := StringReplace(S, #13#10, '', [rfReplaceAll]);
        with Add do
        begin
          Caption := IntToStr(Compteur);
          SubItems.Add(IntToStr(i));
          SubItems.Add(S);
          Inc(Compteur);
        end;
      end;
    end;
    EndUpdate;
    NombreItems := Compteur;
  end;
end;

Voici les résultats que j'obtiens :

Delphi 4 pro - Win98 : 658
(doublons : 14)
Delphi 6 entreprise - Win98 : 658
(doublons : 14)
Delphi 7 entreprise - Win98 : 658
(doublons : 14)

Delphi 4 pro - XP : 2661
(doublons : 70)
Delphi 6 entreprise - XP : 2661
(doublons : 70)
Delphi 7 entreprise - XP : 3008
(doublons : 95)

Delphi 4 pro - Vista : 3263
(doublons : 71)
Delphi 6 entreprise - Vista : 3263
(doublons : 71)
Delphi 7 entreprise - Vista : 3626
(doublons : 97)

Les doublons relevés sont des messages d'erreurs identiques correspondant à des codes d'erreur différents (j'ai testé ultérieurement).

Voilà, maintenant il appartient à chacun de personnaliser s'il le désire en fonction de ses outils et de son système d'exploitation, le système de la ListView devenant alors caduque.

Bonne prog' :p

Commentaire de japee le 17/10/2007 21:53:12 administrateur CS

"Le doute existentiel ne doit pas reléguer la nécessité de se sustenter"

Là-dessus, je n'ai aucun doute, mais il ne faut surtout pas que ça nous empêche de manger.

Salut, Cari, nos messages se sont croisés...

Commentaire de Caribensila le 17/10/2007 22:33:38 10/10

Oups
Je n'avais pas encore vu ce subtil changement de l'interface de CS qui consiste à devoir commenter quand on veut noter.  
Finies les anciennes pratiques anonymes déplorables!
C'est bien.

Donc, je note(10) et pardon pour la vacuité de ce msg.

Commentaire de Jean_Jean le 25/10/2007 19:25:26

Ton code m'a bien rendu service, je l'ai inclu dans une unité à part que j'appelle UDEbugAPI qui comprends une seule fonction :
Function FErrorAPIToStr(CodErrorAPI : Integer): String;
Begin
  { SysErrorMessage retourne parfois une chaîne vide }
  if ArrStrErrorCodes[CodErrorAPI] = EmptyStr
    then Result := '[non documenté]'
    else Begin
      {Des caractères retour chariot parasitent certaines chaînes }
      Result := SysErrorMessage(CodErrorAPI);
      {On ajoute la signification du message d'erreur dans la 3ème colonne }
      Result := StringReplace(Result, #13#10, '', [rfReplaceAll]);
    end;
end;
Je l'utilise en incluant l'unité dans le Uses du code que je veux surveiller.

Exemple :
  if not RenameFile(FicDonnees, ChangeFileExt(FicDonnees,'.old')) then
  begin
    ER := GetLastError;
    if MessageDlg(FicDonnees +' ne peut être sauvegardé en Bakup!'+#13#10+
       'Erreur : '+IntToStr(ER)+' => '+FErrorAPIToStr(ER)
       +#13#10+'Continuer ?',mtConfirmation, [mbYes, mbNo],0) = mrYes then
       begin
         ... on continue
       end;
  end;


 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

erreur dans une listview incompréhensible [ par gandalf_fb ] j'ai réalisé en Delphi un exe avec une listview. l'exe tourne trés bien sur mes deux ordi (Win2000), aucun probleme. les lignes de la listview apparai aide pour enregistrer une ListView dans un fichier [ par GoodStuf ] C'est quoi le code pour pouvoir enregistrer dans un fichier Binaire ou autre toute les donné contenue dans une ListView.Ps, ma listView est incrémente Problème de règles de priorité ??? [ par broidsy ] Bonjours à tous, Voici un problème qui ne semble pas très compliqué et qui me bloc depuis pas mal de temps :Type TBloc = Record//... Deb : T Erreur fatale : fichier 'P_TLB.dcu' Non trouvé [ par daah ] Salut tout le monde! Voilà je débute avec la technologie COM. Lors du recensement de mon premier serveur ActiveX j'ai réçu le message suivant:Fichier TABLEAU DOBJET [ par cuicui ] Je n'arrive pas à utiliser les tableaux d'objetJ'ai une première class correspondant à des codes barreset une deuxieme produit contenat un tableau de Erreur de socket TServerSocket [ par petronius ] Salut,je suis en train de faire un jeu en opengl (sans TForm), et je n'arrive pas a faire dialoguer la partie Client/Serveur, j'obtient un message d'e erreur de ftp : Range Check Error [ par norton ] Bonsoir, quand je veut me connecter au ftp avec ce code ci j'obtiens une erreur : " Range Check error ".procedure TForm5.Button1Click(Sender: TObject) ADOTable ADOQuery [ par le zedi ] Voila j'utilise les composants ADOTable et ADOQuery pour aller voir des tables que j'ai dans SQL Server 2000 mais le probleme c'est que lorsque une ta Listbox : richedit line insertion erreur ! [ par entity666 ] kikou tout le monde ^^ j'ai un petit probleme avec un listbox dans mon appli ... en fait voila :je developpe une application cliente caramail et dans Erreur Pointeur en quittant l'application [ par antares90 ] Bonjour,Je corrige une application sous Delphi, mais je suis un peu novice en la matière. J'ai un message d'erreur lorsque je quitte l'application: "O


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,945 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales