[vcl] terrormanager, gerez facilement vos messages d'erreur dans vos programmes

Soyez le premier à donner votre avis sur cette source.

Vue 6 035 fois - Téléchargée 960 fois


Description

Salut a tous!

voici un petit composant qui je pense vas surrement etre utile a beaucoup d'entre vous.

TErrorManager est un composant non-visuel qui permet de gerrer facilement le declanchement d'erreur dans vos programmes.
Des erreurs ?
Pas seulement, en fait, les objets TError possedent des propriétés particulieres comme par exemple eType qui permet de
definir precisement le type de l'erreur : Notification, Deboggage, Information, Avertissement, Erreur, Erreur critique ect...

note : les objets TError dont le type est etCriticalError termine automatiquement le programme quand on les appels.
(voir le schema hierarchique de l'ordre de declanchement des evenements dans le fichier ErrorMan.pas)

Les objets TError possedent egalement une propriété permettant de definir le type d'affichage (eDisplay) de l'erreur.
Cette derniere peut avoir deux valeur : edInternal, l'erreur est executée en interne, pratique pour faire des fichier de Log.
puis edMsgBox qui affiche une boite de message (MessageDlg) en fonction du type de l'objet.

Le manager quand a lui, possede deux methode pour appeler les objets erreur :
Invoke(index), ou index correspond a l'index de l'objet erreur
FindAndInvoke(eCode), ou eCode correspond au code erreur de l'objet erreur.
FindAndInvoke renvois True si l'objet a été trouvé, sinon elle renvoit false.

le fichier ErrorMan.pas contient de nombreux commentaires explicatif.
le zip est fournis avec un pack (dpk) pour faciliter l'installation et aussi une Demo (repertoire Demo) ou vous pourrez voir un exemple d'utilisation simple de ErrorManager.

Note a l'installation : l'objet TErrorManager serat disponible dans la palette "Exemple" aprés l'installation.

Compatibilitée : TErrorManager est ecrit sur Delphi 7, mais etant pure VCL (TComponent, TCollectionItem et TCollection), il devrait fonctionner sans probleme sur des versions ulterieures ou superieures a la V7.

Pour les debutants qui voudraient créer leurs propre composants :
TErrorManager serat un bon exemple pour apprendre a gerrer les classes TCollection et TCollectionItem.

Source / Exemple :


{ 
 State : v1.4

----------------------------------------------------------------------------------------------------
 Ver : v1.4 - 29/05/2006
     - Export de l'editeur de composant dans une unité propre. verification de la version de la RTL
	  pour la compilation.
	  
 Ver : v1.3 - 27/05/2006
     - Ajout des methodes LoadFromFile et SaveToFile dans TErrorManager
     - Ajout d'un editeur de composant pour le Manager permettant le chargement
       et la sauvegarde du manager pendant la conception.
     - Ajout de control d'erreur dans la methode GetDisplayName.

 Ver : v1.2 - 26/05/2006
     - Verification de l'unicitée des Code erreur (eCode).
     - Amelioration de l'affichage des nom d'erreur : <eCode> <eType, ePriority, eDisplay>
     - Les erreur critique mettent automatiquement fin au programme (Halt).
     - FindAndInvoke appel maintenant la methode Invoke de TErrorManager.
     - Quand on ajoute une erreur (TError) le eCode est initialisé a la valeur de son index dans
       la collection (count+1).
     - Ajout des directives "Default" dans la classe TError.

 Ver : v1.1 - 25/05/2006
     - Ajout de la propriété eHelp dans la classe TError.
     - Modification de la hierarchie de declanchement des evenements OnError et OnInvoked
       voir le schema explicatif plus bas.

 Ver : v1.0 - 03/05/2006
     - Creation des classes TError, TErrors et TErrorManager
     - Creation de l'icone pour la palette

----------------------------------------------------------------------------------------------------

[Classes]
   TError        (TCollectionItem)
   TErrors       (TCollection)
   TErrorManager (TComponent)
   TErrorManagerEditor (TComponentEditor)

----------------------------------------------------------------------------------------------------

[Propriétés TError]
   eCode     : (DWORD) code de l'erreur, doit etre unique
   eDisplay  : mode d'affichage edInternal ou edMsgBox
   eMessage  : message descriptif de l'erreur 
   eHelp     : texte court donnant une solution possible pour eviter l'erreur
   ePriority : vous permet de controller la prioritée de l'erreur
   eType     : vous permet de differencier les erreurs (info, erreur, urgence ect...)

   <!> les erreurs critique (etCriticalError) mettent fin au programme (Halt(eCode)). <!>

[Evenements TError]
   OnInvoked : se declanche aprés OnError et l'affichage de la boite de message
               si eDisplay = edMsgBox.

----------------------------------------------------------------------------------------------------

[Propriétés TErrorManager]
   Errors : la collection TErrors, permet de créer de nouveaux items TError

[Evenements TErrorManager]
   OnError : se declanche avant OnInvoked de l'item TError et avant l'affichage de la boite
             de message si eDisplay de TError = edMsgBox.
             OnError renvois un argument "Error" qui correspond a l'erreur declanchée (TError)
			 
[Methodes TErrorManager]
   procedure Invoke(const ErrorIndex : integer);
         Declanche l'erreur "ErrorIndex".
		 
   function FindAndInvoke(const ErrorCode : DWORD) : boolean;	
         Cherche et declanche l'erreur dont la propriétée eCode est egale a "ErrorCode" et
	       renvois True si l'erreur a été trouvée sinon FindAndInvoke renvois False.

   Conseil : utilisez plutot FindAndInvoke que Invoke.

   procedure LoadFromFile(const FileName : string);
         Charge une liste d'items TError dans le manager.

   procedure SaveToFile(const FileName : string);
         Sauve la liste d'items TError du manager.

----------------------------------------------------------------------------------------------------

[Hierarchie des evenements OnError et OnInvoked]

 TErrorManager.FindAndInvoke(eCode)
 <find> TError.eCode = eCode ? TErrorManager.Invoke(N)

 TErrorManager.Invoke(index)
 <call> TError.Invoke
        <call> TErrorManager.ErrorQuery(TError)
               <event> TErrorManager.OnError(TErrorManager, TError)
        <if> eDisplay = edMsgBox ? MessageDlg(eMessage,eType)
        <event> TError.OnInvoked(TError)
        <if> eType = etCriticalError ? Halt(eCode)

----------------------------------------------------------------------------------------------------
}

Conclusion :


TErrorManager en est a sa version 1.4 du 29/05/2006

aucuns bug connus.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cirec
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
32 -
Alors je le répète haut et fort : :-)

Chez moi et sous D2005, la dernière version de "Terror Manager :-)" fonctionne très bien.
Surtout ne pas oublier de télécharger la dernière version de TErrorManager.

@+
Cirec
f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26 -
alors je suis désolé pour ces petits probleme sous D2005 mais en meme temps ce n'est pas ma faute si borland n'a pas veillé a la compatibilitée ascendante.

voila je m'excuse quand meme, mais si une ame charitable trouve la solutions sous les version superieur a D7 ... qu'il me l'a transmette et je me ferais un plaisir de corriger ma source.
cs_mcapp
Messages postés
74
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
15 décembre 2011
-
Je confirme que j'ai téléchargé la version la plus récente, puisque je l'ai téléchargée ce soir.
Je confirme aussi que j'ai voulu compiler seulement le composant TErrorManager et c'est au cours de cette tentative de compilation que j'ai eu "l'unité DesignerTypes est introuvable".

J'ai eu le même message en compilant un autre composant bouton.
cirec
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
32 -
Salut,

j'avais effectivement un soucis avec la version précédante mais avec la dernière modification de F0xi tout fonctionne très bien.

As-tu bien téléchargé la dernière version ?

En premier il faut compiler et installer le composant TErrorManager et ensuite seulement compiler le projet ErrorManDemo.dpr

@+
Cirec
cs_mcapp
Messages postés
74
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
15 décembre 2011
-
Bonjour, J'ai Delphi 2005 professional;
Et j'ai même constat que Cirec :
"Le curseur (toujours lors de la compilation) lui me renvoie dans le fichier DesignIntf.pas et me dit que l'unité DesignerTypes est introuvable."
Je n'ai pas compris ensuite en lisant vos commentaires si c'est "râpé" et donc si je dois abandonner !
A+
Mcapp

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.