PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → pb de valeur renvoyée dans une proc
pb de valeur renvoyée dans une proc
Iniciado por angelia, set., 03 2005 7:45 PM - 3 respostas
Publicado em setembro, 03 2005 - 7:45 PM
bonjour
j'ai un pb comme vous pouvez vous en douter !
j'ai une méthode dans une classe on ne peut plus banale qui doit renvoyer
une valeur (je l'ai crée à partir de l'assistant) que voici :

Methode de la classe clsUtilisateur :
// identifie l'utilisateur à partir de son login et mdp

// Entrée/Sortie :

// - cLogin :

// - cMdp :

// Retour :

// booléen

FONCTION IdentifierUtil ( cLogin est un chaîne , cMdp est un chaîne )

bReponse est un booléen=Faux

HLitRecherchePremier(TblUtilisateur,Login,cLogin,hBlocageEcriture)

SI PAS HEnDehors(TblUtilisateur) ALORS

// vérifie le mot de passe

SI cMdp<> TblUtilisateur.Mdp ALORS

Info("mot de passe érroné")

SINON

Info("Mot de passe correct")

TblUtilisateur.Connecte=Vrai

HModifie(TblUtilisateur)

bReponse=Vrai

FIN

FIN

RENVOYER bReponse

donc pour moi la fonction devrait renvoyer toujours une valeur !

voici sur le clic d'un bouton comment je fais appel à cette méthode :

MonUtil est un objet clsUtilisateur

SI MonUtil:IdentifierUtil(txtLogin,txtMdp)=Vrai ALORS

Info("utilisateur authentifié")

FIN

et bien windev me dit :
Erreur à la ligne 10 du traitement Clic sur btnValider.
La fonction IdentifierUtil aurait dû renvoyer une valeur.
et il considere que cette méthode ne renvoie pas de valeur.!!

Le plus étrange est que lorsque je transforme cette méthode de classe comme
une simple function locale à ma fenetre (par simple copier coller) et que
je l'appel de la même manière de mon bouton cela marche !!!!!

Si quelqu'un a une idée .. merci beaucoup d'avance.
Publicado em setembro, 04 2005 - 10:19 AM
Bonjour,
Essaye de créer une variable global au projet dans le code d'initialisation du projet exemple :

gpRepense est un booléen=faux

Methode de la classe clsUtilisateur :
FONCTION IdentifierUtil ( cLogin est un chaîne , cMdp est un chaîne )

bReponse est un booléen=Faux

HLitRecherchePremier(TblUtilisateur,Login,cLogin,hBlocageEcriture)

SI PAS HEnDehors(TblUtilisateur) ALORS

// vérifie le mot de passe

SI cMdp<> TblUtilisateur.Mdp ALORS

Info("mot de passe érroné")
gpRepense=faux

SINON

Info("Mot de passe correct")

TblUtilisateur.Connecte=Vrai

HModifie(TblUtilisateur)

gpRepense=vrai

FIN

FIN

// et sans renvoyer aucune valeur


MonUtil est un objet clsUtilisateur

MonUtil:IdentifierUtil(txtLogin,txtMdp)

si gpRepense=vrai
Info("utilisateur authentifié")
sinon
erreur("utilisateur non authentifié")
FIN


Et Voilà ;)

Ali Hi
Publicado em setembro, 05 2005 - 11:06 AM
Bonjour,

J'ai eu aussi ce pb ( V033t) mais en codant en événementiel.
en fait cela est arrivé par les manips suivantes :

1) je crée ma proc en proc.locale : ProcL_toto( ...) ; renvoyer ...

2 ) test : tout ok

3) 3 jours après ... j'ai de nouveau besoin de la même proc... alors je
décide de transférer la locale en globale et de la renommer en
ProcG_toto( même code )

4) A partir de ce moment là, tous les appels à l'ancienne sont en erreur de
compil ( normal) ;
mais tous les appels à la nouvelle ( corrections ancien code ou nouveau
code) rendent la même erreur que toi. Il ne reconnaissait même pas les
paramètres....

5) by pass trouvé :
créer de toute pièce une nouvelle nouvelle proc Globale : ProcG_Toto2( même
code mais retapé à la mimine)
mise en commentaires des anciens appels locaux ou globaux
recompil complète du projet
recodage appel vers la nouvelle nouvelle procG

6 ) tout ok maintenant

Bref pas compris ce qui se passait mais maintenant je réfléchis 10 fois
avant de décider si une proc est locale ou globale.... dans le doute elle
est d'office GLOBALE ;-)

HTH
Michel HERRSCHER CONSULTANT
Président WINDASSO - Association des utilisateurs WxxDEV(c)
Tel : +33450870912 Fax:+33450871741
http://www.windasso.org


Dans un message steph disait :

bonjour
j'ai un pb comme vous pouvez vous en douter !
j'ai une méthode dans une classe on ne peut plus banale qui doit
renvoyer une valeur (je l'ai crée à partir de l'assistant) que voici :

Methode de la classe clsUtilisateur :
// identifie l'utilisateur à partir de son login et mdp

// Entrée/Sortie :

// - cLogin :

// - cMdp :

// Retour :

// booléen

FONCTION IdentifierUtil ( cLogin est un chaîne , cMdp est un chaîne )

bReponse est un booléen=Faux

HLitRecherchePremier(TblUtilisateur,Login,cLogin,hBlocageEcriture)

SI PAS HEnDehors(TblUtilisateur) ALORS

// vérifie le mot de passe

SI cMdp<> TblUtilisateur.Mdp ALORS

Info("mot de passe érroné")

SINON

Info("Mot de passe correct")

TblUtilisateur.Connecte=Vrai

HModifie(TblUtilisateur)

bReponse=Vrai

FIN

FIN

RENVOYER bReponse

donc pour moi la fonction devrait renvoyer toujours une valeur !

voici sur le clic d'un bouton comment je fais appel à cette méthode :

MonUtil est un objet clsUtilisateur

SI MonUtil:IdentifierUtil(txtLogin,txtMdp)=Vrai ALORS

Info("utilisateur authentifié")

FIN

et bien windev me dit :
Erreur à la ligne 10 du traitement Clic sur btnValider.
La fonction IdentifierUtil aurait dû renvoyer une valeur.
et il considere que cette méthode ne renvoie pas de valeur.!!

Le plus étrange est que lorsque je transforme cette méthode de classe
comme une simple function locale à ma fenetre (par simple copier
coller) et que je l'appel de la même manière de mon bouton cela
marche !!!!!

Si quelqu'un a une idée .. merci beaucoup d'avance.
Publicado em setembro, 05 2005 - 3:11 PM
J'ai deja eu un probleme similaire...
En fait, mon probleme ne venait pas du tour de mon code.
il venait du type de bouton (annulation, validation,etc...)
Et je me suis apercu que plusieurs boutons etaient du meme type (validation
je crois)
En corrigeant ce probleme, ca a corrigé l'autre.
Regarde si c'est pas le meme phenomene....

"steph" <angelia@free.fr> a écrit dans le message de news:
4319b124@news.pcsoft.fr...
bonjour
j'ai un pb comme vous pouvez vous en douter !
j'ai une méthode dans une classe on ne peut plus banale qui doit renvoyer
une valeur (je l'ai crée à partir de l'assistant) que voici :

Methode de la classe clsUtilisateur :
// identifie l'utilisateur à partir de son login et mdp

// Entrée/Sortie :

// - cLogin :

// - cMdp :

// Retour :

// booléen

FONCTION IdentifierUtil ( cLogin est un chaîne , cMdp est un chaîne )

bReponse est un booléen=Faux

HLitRecherchePremier(TblUtilisateur,Login,cLogin,hBlocageEcriture)

SI PAS HEnDehors(TblUtilisateur) ALORS

// vérifie le mot de passe

SI cMdp<> TblUtilisateur.Mdp ALORS

Info("mot de passe érroné")

SINON

Info("Mot de passe correct")

TblUtilisateur.Connecte=Vrai

HModifie(TblUtilisateur)

bReponse=Vrai

FIN

FIN

RENVOYER bReponse

donc pour moi la fonction devrait renvoyer toujours une valeur !

voici sur le clic d'un bouton comment je fais appel à cette méthode :

MonUtil est un objet clsUtilisateur

SI MonUtil:IdentifierUtil(txtLogin,txtMdp)=Vrai ALORS

Info("utilisateur authentifié")

FIN

et bien windev me dit :
Erreur à la ligne 10 du traitement Clic sur btnValider.
La fonction IdentifierUtil aurait dû renvoyer une valeur.
et il considere que cette méthode ne renvoie pas de valeur.!!

Le plus étrange est que lorsque je transforme cette méthode de classe
comme
une simple function locale à ma fenetre (par simple copier coller) et que
je l'appel de la même manière de mon bouton cela marche !!!!!

Si quelqu'un a une idée .. merci beaucoup d'avance.