OVH Cloud OVH Cloud

[WD8] HSurErreur

13 réponses
Avatar
Jean Passe
Salut,

Je personalise la gestion des erreurs d'une appli
J'ai mis tous les traitements d'erreur dans un composant. Ce composant a été
compilé avec un accès public à toutes les procédures et fenêtres.
Il a été correctement importé dans le projet en cours.

Je déclare dans l'init du projet HSURERREUR("*",hErrTout,"ErreursHF")

où ErreursHF est une procédure globale du composant.

Et lorsque je lance le programme WD me dit que ErreursHF n'est pas une
procédure ou une fenêtre.

Ca voudrait dire que le programme ne reconnait pas ou n'accède pas au
composant ?

Le nom de la procédure est correct, le composant est bien importé.

C'est quoi ce binz ?

Merci.
A+

Jan Van Wijk

10 réponses

1 2
Avatar
JC FLAJOULOT
> Je déclare dans l'init du projet HSURERREUR("*",hErrTout,"ErreursHF")
où ErreursHF est une procédure globale du composant.
Et lorsque je lance le programme WD me dit que ErreursHF n'est pas une
procédure ou une fenêtre.
Ca voudrait dire que le programme ne reconnait pas ou n'accède pas au
composant ?
Le nom de la procédure est correct, le composant est bien importé.
C'est quoi ce binz ?



Bonjour,

Je crée et j'utilise souvent des composants sans avoir de problèmes, je suis
donc surpris du votre.

1°/ Quand vous dites que vous avez correctement importé le composant comment
avez vous procédé ?

2°/ Par quel moyen accédez-vous à la procédure en cause dans le composant
lui même ?
Je pense en effet que la déclaration HSURERREUR("*",hErrTout,"ErreursHF")
devrait se trouver dans l'init du composant plutot que dans celui du projet,
mais à voir, n'ayant pas tous vos éléments.

Sincères salutations
--
Jean-Claude FLAJOULOT

(otez _no_Spam pour me contacter en privé)
Sécurité Pointage & Biométrie
http://www.sp-et-b.com
Avatar
Jean Passe
Salut,

Je crée et j'utilise souvent des composants sans avoir de problèmes, je


suis
donc surpris du votre.



J'en crée et j'en utilise, sans doute moins souvent, mais la surprise est la
même... :-)

1°/ Quand vous dites que vous avez correctement importé le composant


comment
avez vous procédé ?



Comme d'habitude.... Importer un composant au projet (ou quelque chose du
genre).
Qu'il est bien importé comme il faut je le déduit du fait que lorsque je
change la version du composant, WD détecte bien le changement de version au
lancement du projet utilisant le composant et propose sa mise à jour.

2°/ Par quel moyen accédez-vous à la procédure en cause dans le composant
lui même ?



Comme d'hab aussi : les objets d'un composant sont accessibles comme s'ils
faisaient partie du projet lui-même.
J'appelle donc la procédure.
Dans le cas précis je dis qu'à la place de la gestion standard des erreurs
il faut appeler la fonction ErreursHF.
En tout cas c'est comme ça que je comprends la fonction HSurErreur.

Je pense en effet que la déclaration HSURERREUR("*",hErrTout,"ErreursHF")
devrait se trouver dans l'init du composant plutot que dans celui du


projet,
mais à voir, n'ayant pas tous vos éléments.



Ben, ça ne me paraît pas logique. Le composant ne gère aucun fichier et
n'est là que pour interfacer la gestion d'erreurs (HF et Exceptions). C'est
appli utilisant le composant qui va détecter une connerie et fera appel à la
gestion d'erreurs, personalisée ou pas. Pour moi le HSurErreur doit donc se
trouver dans l'init du projet.
Cela dit, je me suis posé la question s'il fallait insérer cette fonction à
un autre endroit. Mais en fait cela ne change rien, la procédure du
composant n'est jamais reconnu, quel que soit l'endroit où se trouve ce
HSurErreur.

Merci.
A+
--
Jan Van Wijk
Avatar
Jean Passe
Re,

Bon, j'ai essayé d'appeler une fenêtre du composant par un simple
Ouvre(fen_composant) où fen_composant est une fenêtre faisant partie du
composant. Il n'est pas prévu du tout dans le déroulement normal du
programme de faire comme cela, mais juste pour un test.
Et ça marche. Le composant est donc bien là et accessible.

Ensuite, j'ai fait un HSurErreur("*",hErrTout,"composant.ErreursHF"). Le
résultat est le même : composant.ErreursHF n'est pas une procédure ou une
fenêtre du projet.
Ensuite, j'ai fait un HSurErreur("*",hErrTout,composant.ErreursHF). Le
résultat est le même : ErreursHF n'est pas une procédure ou une fenêtre du
projet.

C'est très bizarre, car quand je saisi (dans l'éditeur de code) le nom du
composant, l'ssistant me propose le composant et dès que j'ai saisi le point
(après le nom du composant) WD me propose toutes les procédures et fenêtres
du composant.....

Il semblerait donc qu'il y ait un problème avec HSurErreur........ :-(

A moins que je n'ai pas compris son fonctionnement....

Le contournement serait sans doute de créer une fenêtre bidon dans le
composant d'où il faut appeler la procédure, mais je sens déjà que ça va
foirer aussi... :-(

Merci.
A+

--
Jan Van Wijk
Avatar
JC FLAJOULOT
Bonjour,

Ce n'est pas HsurErreur qu'il faut appeler depuis votre appli dans le
composant, mais votre procédure ErreursHF,
éventuellement sous la forme MaValeurDeRetour = ErreursHF(MesParamêtres).
A vous ensuite de la modifier pour qu'elle effectue ensuite les traitements
HsurErreur, avec les parametres que vous désirez.

Sincères salutations
--
Jean-Claude FLAJOULOT

(otez _no_Spam pour me contacter en privé)
Sécurité Pointage & Biométrie
http://www.sp-et-b.com
Avatar
Jean Passe
Salut,

Ce n'est pas HsurErreur qu'il faut appeler depuis votre appli dans le
composant, mais votre procédure ErreursHF,
éventuellement sous la forme MaValeurDeRetour = ErreursHF(MesParamêtres).
A vous ensuite de la modifier pour qu'elle effectue ensuite les


traitements
HsurErreur, avec les parametres que vous désirez.



Ou je me suis mal exprimé (probable) ou alors je ne comprends rien du tout
de HSurErreur.....

J'ai une appli MonAppli et un composant MonCompo. Ce dernier est utilisé par
MonAppli.
Dans ce composant il n'y a que du code qui s'occupe d'analyser l'erreur
produite, de l'enregistrer dans un fichier et d'afficher une fenêtre
adéquate.

Le HSurErreur, appelé dans MonAppli a pour mission de desactiver les gestion
d'erreurs HF intégrée dans le moteur HF et d'indiquer qu'est-ce qu'il faut
faire à la place. Je dois donc l'exécuter dans MonAppli, puisque c'est
MonAppli qui rencontre l'erreur éventuelle. La procédure que le moteur HF
doit exécuter à la place de la gestion auto des erreurs est la fonction
ErreursHF(nrerreur) se trouvant dans MonCompo.
Cette procédure analyse l'erreur, l'enregistre, affiche un message à
l'utilisateur et la fenêtre renverra une valeur selon la réaction de
l'utilisateur.

Aurais-je mal compris le HSurErreur ????

Merci.
A+

--
Jan Van Wijk
Avatar
Jean Passe
Re,

Et c'est encore plus étrange que je ne pensais..... :-/

J'arrive très bien et logiquement à ouvrir une fenêtre du composant en
faisant un simple Ouvre(fen_composant).

Si je fais un HSurErreur("*",hErrTout,"mon_composant.fen_composant) WD me
dit que fen_composant n'est pas une fenêtre du projet ou procédure...

A+

--
Jan Van Wijk
Avatar
JC FLAJOULOT
> > Ce n'est pas HsurErreur qu'il faut appeler depuis votre appli dans le
> composant, mais votre procédure ErreursHF,
> éventuellement sous la forme MaValeurDeRetour ErreursHF(MesParamêtres).
> A vous ensuite de la modifier pour qu'elle effectue ensuite les
traitements
> HsurErreur, avec les parametres que vous désirez.

Ou je me suis mal exprimé (probable) ou alors je ne comprends rien du tout
de HSurErreur.....
J'ai une appli MonAppli et un composant MonCompo. Ce dernier est utilisé


par
MonAppli.
Dans ce composant il n'y a que du code qui s'occupe d'analyser l'erreur
produite, de l'enregistrer dans un fichier et d'afficher une fenêtre
adéquate.
Le HSurErreur, appelé dans MonAppli a pour mission de desactiver les


gestion
d'erreurs HF intégrée dans le moteur HF et d'indiquer qu'est-ce qu'il faut
faire à la place. Je dois donc l'exécuter dans MonAppli, puisque c'est
MonAppli qui rencontre l'erreur éventuelle. La procédure que le moteur HF
doit exécuter à la place de la gestion auto des erreurs est la fonction
ErreursHF(nrerreur) se trouvant dans MonCompo.
Cette procédure analyse l'erreur, l'enregistre, affiche un message à
l'utilisateur et la fenêtre renverra une valeur selon la réaction de
l'utilisateur.
Aurais-je mal compris le HSurErreur ????



Bonjour,

Je viens de faire un test, je confirme donc qu'il ne faut pas appeler
HSURERREUR("*",hErrTout,"ErreursHF") dans votre appli,
mais comme je l'ai indiqué précedement ErreursHF.
ErreursHF se trouvant dans le composant et effectue le traitement des
erreurs que vous désirez.

Donc pour résumer :
Un composant contenant la procédure globale ErreursHF, cette procédure
effectue et contient les traitements d'erreurs désirés.
Ce composant est importé dans l'appli.
Dans le code d'initialisation de l'appli on appelle ErreursHF (du
composant).

Autrement si vous voulez utiliser HSURERREUR("*",hErrTout,"ErreursHF") comme
vous l'indiquez, il ne faut pas que la procédure ErreursHF soit dans un
composant, mais soit directement une procédure globale de votre appli.

Sincères salutations
--
Jean-Claude FLAJOULOT

(otez _no_Spam pour me contacter en privé)
Sécurité Pointage & Biométrie
http://www.sp-et-b.com
Avatar
Jean Passe
Re,

Vous avez certainement raison, mais il y a quelque chose qui cloche...... à
mon avis....

Ce n'est pas que je veuille utiliser HSurErreur, c'est que je DOIS
l'utiliser si je veux personaliser la gestion d'erreurs.
Si j'exécute ErreursHF() dès l'init du programme ça ne sert à rien, il n'y a
pas d'erreur.
Si j'insère le HSurErreur dans cette procédure, j'indique quoi comme
procédure à exécuter en cas d'erreur ?
Si je dois créer une procédure dans le composant qui ne fait que le
HSurErreur.... c'est pas sérieux.....
J'ai plutôt l'impression que l'on ne peut pas personaliser la gestion
d'erreurs par le biais d'un composant....

On va bien voir, j'ai posée la question au ST de PCS (avant de voir votre
réponse).

Merci en tout cas pour vos interventions.

A+

--
Jan Van Wijk
Je viens de faire un test, je confirme donc qu'il ne faut pas appeler
HSURERREUR("*",hErrTout,"ErreursHF") dans votre appli,
mais comme je l'ai indiqué précedement ErreursHF.
ErreursHF se trouvant dans le composant et effectue le traitement des
erreurs que vous désirez.

Donc pour résumer :
Un composant contenant la procédure globale ErreursHF, cette procédure
effectue et contient les traitements d'erreurs désirés.
Ce composant est importé dans l'appli.
Dans le code d'initialisation de l'appli on appelle ErreursHF (du
composant).

Autrement si vous voulez utiliser HSURERREUR("*",hErrTout,"ErreursHF")


comme
vous l'indiquez, il ne faut pas que la procédure ErreursHF soit dans un
composant, mais soit directement une procédure globale de votre appli.

Sincères salutations
--
Jean-Claude FLAJOULOT

(otez _no_Spam pour me contacter en privé)
Sécurité Pointage & Biométrie
http://www.sp-et-b.com






Avatar
JC FLAJOULOT
> Si je dois créer une procédure dans le composant qui ne fait que le
HSurErreur.... c'est pas sérieux.....



Bonjour,

Non mais une procédure dans le composant qui gère le HSurErreur, et d'autres
qui gèrent ce que vous voulez faire en cas d'erreur.

Sincères salutations
--
Jean-Claude FLAJOULOT

(otez _no_Spam pour me contacter en privé)
Sécurité Pointage & Biométrie
http://www.sp-et-b.com
Avatar
JC FLAJOULOT
> Vous avez certainement raison, mais il y a quelque chose qui cloche......


à
mon avis....
Ce n'est pas que je veuille utiliser HSurErreur, c'est que je DOIS
l'utiliser si je veux personaliser la gestion d'erreurs.
Si j'exécute ErreursHF() dès l'init du programme ça ne sert à rien, il n'y


a
pas d'erreur.
Si j'insère le HSurErreur dans cette procédure, j'indique quoi comme
procédure à exécuter en cas d'erreur ?
Si je dois créer une procédure dans le composant qui ne fait que le
HSurErreur.... c'est pas sérieux.....
J'ai plutôt l'impression que l'on ne peut pas personaliser la gestion
d'erreurs par le biais d'un composant....



Bonjour,

Autre solution :

Déclarer dans l'init du projet HSURERREUR("*",hErrTout,"pMaprocErreurs")
Créer une procédure globale pMaprocErreurs dans le projet qui appelle
ErreursHF du composant.

Sincères salutations
--
Jean-Claude FLAJOULOT

(otez _no_Spam pour me contacter en privé)
Sécurité Pointage & Biométrie
http://www.sp-et-b.com
1 2