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 / Exemple :
Voir dans le Zip.
Conclusion :
Garanti compilable sous D4.
25 oct. 2007 à 19:25
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;
19 oct. 2007 à 16:08
Si c'est pas déplorable ça...
Moi aussi je note 10/10: faut bien motiver les troupes, et ce programme est super pratique.
A proposer aussi pour les autres langages, puisqu'il ne s'agit pas d'erreurs de Delphi.
17 oct. 2007 à 22:33
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.
17 oct. 2007 à 21:53
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...
17 oct. 2007 à 21:47
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
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.