PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Renvoyer le nom du traitement en cours
Renvoyer le nom du traitement en cours
Débuté par guest, 26 jan. 2006 18:48 - 7 réponses
Posté le 26 janvier 2006 - 18:48
Bonjour, j'ai beau chercher dans l'aide je ne trouve pas le moyen de renvoyer le nom du traitement ou de la procédure en cours d'exécution.
Par exemple, si j'ai une erreur dans un traitement (par exemple sortie d'un champ), je voudrais pouvoir afficher un message d'erreur avec la fonction Erreur() :
"Erreur dans le traitement : Sortie de chpCodeArticle"
De même si j'ai une erreur dans une procédure (ex : AfficheArticle()) :
"Erreur dans la procédure : AfficheArticle()"

En gros je voudrais trouver l'équivalent de MaFenêtre mais pour un traitement ou une procédure.

Merci,
Claire
Posté le 26 janvier 2006 - 20:06
Le 26/01/2006, Claire a supposé :
Bonjour, j'ai beau chercher dans l'aide je ne trouve pas le moyen de renvoyer
le nom du traitement ou de la procédure en cours d'exécution. Par exemple, si
j'ai une erreur dans un traitement (par exemple sortie d'un champ), je
voudrais pouvoir afficher un message d'erreur avec la fonction Erreur() :
"Erreur dans le traitement : Sortie de chpCodeArticle" De même si j'ai une
erreur dans une procédure (ex : AfficheArticle()) : "Erreur dans la procédure :
AfficheArticle()"

En gros je voudrais trouver l'équivalent de MaFenêtre mais pour un traitement
ou une procédure.

Merci,
Claire


La fonction ExceptionInfo(errComplet) est ton amie.

Eric

--
Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
Posté le 26 janvier 2006 - 20:10
Bonsoir,

Pour les traitements d'erreur que tu cites tu peux utiliser :
ExceptionInfo(errElément)

--
Francis MOREL
Posté le 26 janvier 2006 - 20:54
Merci à tous les deux mais je me suis mal exprimée.
J'avais vu cette fonction mais je veux pouvoir renvoyer le nom du traitement même quand il n'y a pas d'erreur "système".
Par exemple, je veux pouvoir faire :

PROCEDURE Coucou()

SELON i
CAS 1 :
// traitement 1
CAS 2 :
// traitement 2
AUTRE CAS :
Erreur("Mauvais paramètre","Fenêtre : "+MaFenêtre,"Traitement : "+ ???)
FIN

Je cherche quoi mettre à la place des 3 points d'interrogations pour renvoyer "Coucou"
Posté le 27 janvier 2006 - 10:42
saqlut

si tu es dans la procédure Coucou alors met "Coucou" à la place des ???

maintenant si j'ai mal lu ton exemple alors je ne sais pas
Posté le 27 janvier 2006 - 11:49
Bonjour,
Pourquoi ne passes tu pas le nom de ton champ en paramètre à ta procédure.
EX :
Dans ton champ tu appelles ta procédure
Coucou("ChpCodeArticle")

Dans ta procédure :
PROCEDURE Coucou(_Nom = "Non Défini"// au cas ou)

SELON i
CAS 1 :
// traitement 1
CAS 2 :
// traitement 2
AUTRE CAS :
Erreur("Mauvais paramètre","Fenêtre : "+MaFenêtre,"Traitement : "+ _Nom)
FIN
Posté le 30 janvier 2006 - 06:54
Salut,

j'ai trouvé un astuce pour récupérer le traitement en cours.

L'astuce est d'appeler une fonction, appelons la getTraitment, dans le
traitement où tu as besoin de récupérer le nom du traitement. Dans cette
fonction (getTraitement) tu provoques le déclanchement d'une exception. Tu
récupères l'état de la pile d'appele et tu t'intéresses à l'avant dernier
traitement (celui qui a appelé la fonction getTraitement).

Voici le code de getTraitement:

iPos est un entier
strException est une chaîne = "Traitement inconnu"
QUAND EXCEPTION DANS
{"",indVariable}
FAIRE
strException = ExceptionInfo(errComplet)
iPos = Position(strException,"eit_pilewl",1,SansCasse)//La pile d'appel est
positionnée sous cette chaine
SI iPos > 0 ALORS
strException = strException[[iPos A]]
strException = ExtraitChaîne(strException,3,RC)//Position de l'avant
dernière fonction appelée
FIN
FIN
RENVOYER strException

Et voilà tu as le nom de la fonction en cours!!
Tu peux toujours développer pour enrichir le retour de la fonction

Mathieu
Posté le 30 janvier 2006 - 10:48
Le but est de me créer une procédure globale à tout le projet pour ne pas avoir à taper à chaque fois :
Erreur("Mauvais paramètre... Coucou")

surtout que le nom du champ (Coucou) peut changer en cours de programmation