bonjour,
j'ai un pb que je n'ai pas reussi à résoudre.
J'ai crée une classe avec des méthodes dont certaines renvoient des valeurs.
Ce parametrage a été fait sur le diagramme UML que j'ai généré ensuite.
Au niveau de la syntaxe générée, pas de pb mais à un moment (donc pas
forcement au début) quand j'appel la méthode qui doit retourner une valeur,
il m'affiche un message d'erreur du type " cette procedure aurait du
renvoyer une valeur". Ce n'est pas, à priori un pb dans le code puisqu'il
fonctionnait à un moment donné! j'ai eu beau compiler, cela ne change rien.
J'ai l'impression qu'il y a de nombreux pb avec la programmation objet.
Pour info voila le code de ma méthode et si vous regardez bien, dans tous
les cas elle renvoie une valeur (bReponse) donc il n'y a pas de raison
!!!!!!
FONCTION Identifier ( cLogin est un chaîne , cMdp est un chaîne )
bReponse est un booléen=Faux
// - regarde si le login existe
HLitRecherchePremier(TblUtilisateur,Login,cLogin)
SI HTrouve(TblUtilisateur) ALORS
:m_IdLogué=TblUtilisateur.IDLogué
: m_Login=TblUtilisateur.Login
:m_Mdp=TblUtilisateur.Mdp
:m_Statut=TblUtilisateur.Statut
:m_Connecté=TblUtilisateur.Connecte
:m_HNumEnr=HNumEnr(TblUtilisateur)
//si l'utilisateur est déjà connecté sur un autre poste
SI :m_Connecté=Vrai ALORS
Info("L'utilisateur est déjà connecté sur un autre
poste!, veuillez vous déloguer de cet autre poste.","Si le problème
persiste, veuillez faire appel à l'administrateur de l'application")
FenetreLogin.txtLogin=""
FenetreLogin.txtMdp=""
EcranPremier(FenetreLogin.txtLogin)
SINON // vérification du mot de passe
SI cMdp<>:m_Mdp ALORS// si le mot de
passe est erroné
Info("Le mot de passe saisi est
erroné")
FenetreLogin.txtMdp=""
EcranPremier(FenetreLogin.txtMdp)
SINON // si la connection est ok on le
note comme étant connecté
TblUtilisateur.Connecte=Vrai
HModifie(TblUtilisateur,hNumEnrEnCours)
bReponse=Vrai
FIN
FIN
SINON
Info("L'utilisateur n'a pas été reconnu (mauvais login)!")
FenetreLogin.txtLogin=""
FenetreLogin.txtMdp=""
EcranPremier(FenetreLogin.txtLogin)
bReponse=Faux
FIN
RENVOYER bReponse
Voila le code qui appel cette méthode et qui plante (qui se déclenche en
cliquant sur un bouton)
SI ClsMonLogué:Identifier(txtLogin,txtMdp) ALORS
clsMonLogué étant une instance de la classe en question.
Merci beaucoup d'avance pour ceux qui m'apporteront leur aide.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Marcel.berman
Salut !
On 12-Sep-2005, "steph" wrote:
bonjour, j'ai un pb que je n'ai pas reussi à résoudre. J'ai crée une classe avec des méthodes dont certaines renvoient des valeurs. Ce parametrage a été fait sur le diagramme UML que j'ai généré ensuite. Au niveau de la syntaxe générée, pas de pb mais à un moment (donc pas forcement au début) quand j'appel la méthode qui doit retourner une valeur, il m'affiche un message d'erreur du type " cette procedure aurait du renvoyer une valeur". Ce n'est pas, à priori un pb dans le code puisqu'il fonctionnait à un moment donné! j'ai eu beau compiler, cela ne change rien. J'ai l'impression qu'il y a de nombreux pb avec la programmation objet. Pour info voila le code de ma méthode et si vous regardez bien, dans tous
les cas elle renvoie une valeur (bReponse) donc il n'y a pas de raison !!!!!! FONCTION Identifier ( cLogin est un chaîne , cMdp est un chaîne )
bReponse est un booléenúux
// - regarde si le login existe
HLitRecherchePremier(TblUtilisateur,Login,cLogin)
SI HTrouve(TblUtilisateur) ALORS
:m_IdLogué=TblUtilisateur.IDLogué
: m_Login=TblUtilisateur.Login
:m_Mdp=TblUtilisateur.Mdp
:m_Statut=TblUtilisateur.Statut
:m_Connecté=TblUtilisateur.Connecte
:m_HNumEnr=HNumEnr(TblUtilisateur)
//si l'utilisateur est déjà connecté sur un autre poste
SI :m_Connecté=Vrai ALORS
Info("L'utilisateur est déjà connecté sur un autre
poste!, veuillez vous déloguer de cet autre poste.","Si le problème persiste, veuillez faire appel à l'administrateur de l'application")
FenetreLogin.txtLogin=""
FenetreLogin.txtMdp=""
EcranPremier(FenetreLogin.txtLogin)
SINON // vérification du mot de passe
SI cMdp<>:m_Mdp ALORS// si le mot de passe est erroné
Info("Le mot de passe saisi est erroné")
FenetreLogin.txtMdp=""
EcranPremier(FenetreLogin.txtMdp)
SINON // si la connection est ok on le
note comme étant connecté
TblUtilisateur.Connecte=Vrai
HModifie(TblUtilisateur,hNumEnrEnCours)
bReponse=Vrai
FIN
FIN
SINON
Info("L'utilisateur n'a pas été reconnu (mauvais login)!")
FenetreLogin.txtLogin=""
FenetreLogin.txtMdp=""
EcranPremier(FenetreLogin.txtLogin)
bReponseúux
FIN
RENVOYER bReponse
Voila le code qui appel cette méthode et qui plante (qui se déclenche en cliquant sur un bouton) SI ClsMonLogué:Identifier(txtLogin,txtMdp) ALORS
clsMonLogué étant une instance de la classe en question.
Merci beaucoup d'avance pour ceux qui m'apporteront leur aide.
J'ai bien lu ... mais je pense que chaque fois que tu utilises EcranPremier(), le code qui suit cette fonction n'est pas exécuté ... Autrement dit, tu ne renvoies pas de valeur de retour ... En esopérant t'avoir aidé ...
-- Marcel Berman c/o Managing Business SPRL Allée du Petit Paris, 11 B - 1410 - Waterloo Tel : +32 2 351.60.64 Fax : +32 2 351.45.78 Gsm : +32 475.799.477
Salut !
On 12-Sep-2005, "steph" <angelia@free.fr> wrote:
bonjour,
j'ai un pb que je n'ai pas reussi à résoudre.
J'ai crée une classe avec des méthodes dont certaines renvoient des
valeurs.
Ce parametrage a été fait sur le diagramme UML que j'ai généré ensuite.
Au niveau de la syntaxe générée, pas de pb mais à un moment (donc pas
forcement au début) quand j'appel la méthode qui doit retourner une
valeur,
il m'affiche un message d'erreur du type " cette procedure aurait du
renvoyer une valeur". Ce n'est pas, à priori un pb dans le code puisqu'il
fonctionnait à un moment donné! j'ai eu beau compiler, cela ne change
rien.
J'ai l'impression qu'il y a de nombreux pb avec la programmation objet.
Pour info voila le code de ma méthode et si vous regardez bien, dans tous
les cas elle renvoie une valeur (bReponse) donc il n'y a pas de raison
!!!!!!
FONCTION Identifier ( cLogin est un chaîne , cMdp est un chaîne )
bReponse est un booléenúux
// - regarde si le login existe
HLitRecherchePremier(TblUtilisateur,Login,cLogin)
SI HTrouve(TblUtilisateur) ALORS
:m_IdLogué=TblUtilisateur.IDLogué
: m_Login=TblUtilisateur.Login
:m_Mdp=TblUtilisateur.Mdp
:m_Statut=TblUtilisateur.Statut
:m_Connecté=TblUtilisateur.Connecte
:m_HNumEnr=HNumEnr(TblUtilisateur)
//si l'utilisateur est déjà connecté sur un autre poste
SI :m_Connecté=Vrai ALORS
Info("L'utilisateur est déjà connecté sur un autre
poste!, veuillez vous déloguer de cet autre poste.","Si le problème
persiste, veuillez faire appel à l'administrateur de l'application")
FenetreLogin.txtLogin=""
FenetreLogin.txtMdp=""
EcranPremier(FenetreLogin.txtLogin)
SINON // vérification du mot de passe
SI cMdp<>:m_Mdp ALORS// si le mot de
passe est erroné
Info("Le mot de passe saisi
est
erroné")
FenetreLogin.txtMdp=""
EcranPremier(FenetreLogin.txtMdp)
SINON // si la connection est ok on le
note comme étant connecté
TblUtilisateur.Connecte=Vrai
HModifie(TblUtilisateur,hNumEnrEnCours)
bReponse=Vrai
FIN
FIN
SINON
Info("L'utilisateur n'a pas été reconnu (mauvais login)!")
FenetreLogin.txtLogin=""
FenetreLogin.txtMdp=""
EcranPremier(FenetreLogin.txtLogin)
bReponseúux
FIN
RENVOYER bReponse
Voila le code qui appel cette méthode et qui plante (qui se déclenche en
cliquant sur un bouton)
SI ClsMonLogué:Identifier(txtLogin,txtMdp) ALORS
clsMonLogué étant une instance de la classe en question.
Merci beaucoup d'avance pour ceux qui m'apporteront leur aide.
J'ai bien lu ... mais je pense que chaque fois que tu utilises
EcranPremier(), le code qui suit cette fonction n'est pas exécuté ...
Autrement dit, tu ne renvoies pas de valeur de retour ...
En esopérant t'avoir aidé ...
--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
bonjour, j'ai un pb que je n'ai pas reussi à résoudre. J'ai crée une classe avec des méthodes dont certaines renvoient des valeurs. Ce parametrage a été fait sur le diagramme UML que j'ai généré ensuite. Au niveau de la syntaxe générée, pas de pb mais à un moment (donc pas forcement au début) quand j'appel la méthode qui doit retourner une valeur, il m'affiche un message d'erreur du type " cette procedure aurait du renvoyer une valeur". Ce n'est pas, à priori un pb dans le code puisqu'il fonctionnait à un moment donné! j'ai eu beau compiler, cela ne change rien. J'ai l'impression qu'il y a de nombreux pb avec la programmation objet. Pour info voila le code de ma méthode et si vous regardez bien, dans tous
les cas elle renvoie une valeur (bReponse) donc il n'y a pas de raison !!!!!! FONCTION Identifier ( cLogin est un chaîne , cMdp est un chaîne )
bReponse est un booléenúux
// - regarde si le login existe
HLitRecherchePremier(TblUtilisateur,Login,cLogin)
SI HTrouve(TblUtilisateur) ALORS
:m_IdLogué=TblUtilisateur.IDLogué
: m_Login=TblUtilisateur.Login
:m_Mdp=TblUtilisateur.Mdp
:m_Statut=TblUtilisateur.Statut
:m_Connecté=TblUtilisateur.Connecte
:m_HNumEnr=HNumEnr(TblUtilisateur)
//si l'utilisateur est déjà connecté sur un autre poste
SI :m_Connecté=Vrai ALORS
Info("L'utilisateur est déjà connecté sur un autre
poste!, veuillez vous déloguer de cet autre poste.","Si le problème persiste, veuillez faire appel à l'administrateur de l'application")
FenetreLogin.txtLogin=""
FenetreLogin.txtMdp=""
EcranPremier(FenetreLogin.txtLogin)
SINON // vérification du mot de passe
SI cMdp<>:m_Mdp ALORS// si le mot de passe est erroné
Info("Le mot de passe saisi est erroné")
FenetreLogin.txtMdp=""
EcranPremier(FenetreLogin.txtMdp)
SINON // si la connection est ok on le
note comme étant connecté
TblUtilisateur.Connecte=Vrai
HModifie(TblUtilisateur,hNumEnrEnCours)
bReponse=Vrai
FIN
FIN
SINON
Info("L'utilisateur n'a pas été reconnu (mauvais login)!")
FenetreLogin.txtLogin=""
FenetreLogin.txtMdp=""
EcranPremier(FenetreLogin.txtLogin)
bReponseúux
FIN
RENVOYER bReponse
Voila le code qui appel cette méthode et qui plante (qui se déclenche en cliquant sur un bouton) SI ClsMonLogué:Identifier(txtLogin,txtMdp) ALORS
clsMonLogué étant une instance de la classe en question.
Merci beaucoup d'avance pour ceux qui m'apporteront leur aide.
J'ai bien lu ... mais je pense que chaque fois que tu utilises EcranPremier(), le code qui suit cette fonction n'est pas exécuté ... Autrement dit, tu ne renvoies pas de valeur de retour ... En esopérant t'avoir aidé ...
-- Marcel Berman c/o Managing Business SPRL Allée du Petit Paris, 11 B - 1410 - Waterloo Tel : +32 2 351.60.64 Fax : +32 2 351.45.78 Gsm : +32 475.799.477
mat
wrote:
J'ai bien lu ... mais je pense que chaque fois que tu utilises EcranPremier(), le code qui suit cette fonction n'est pas exécuté ... Autrement dit, tu ne renvoies pas de valeur de retour ... En esopérant t'avoir aidé ...
Bonjour,
je n'ai pas compris la fonction de cette façon et n'ai jamais rencontré ce type de comportement. Mais effectivement, l'aide dit que les traitement de sortie et d'entrée sont exécutés immédiatement. Cela peut en effet provoquer un arret de traitement si elles incluent RepriseSaisie, par exemple. Un test rapide confirme que la procédure d'entrée du nouveau champ est exécuté avant tout autre code suivant EcranPremier. Lisant la partie sous-ligné de l'aide je pensais toujours que ces procédures ne s'exécutent qu'une fois le code en cours s'arrêtera...
Salutations mat
Extrait de l'aide :
EcranPremier et RepriseSaisie
Ces deux fonctions ont un comportement très différent :
La fonction RepriseSaisie arrête le traitement en cours pour forcer la reprise de la saisie dans le champ indiqué.
La fonction EcranPremier décrit quel sera le prochain champ ayant la saisie (lorsque le code en cours s'arrêtera et que la saisie reprendra). =========================================================================
Marcel.berman@managingbusiness.be wrote:
J'ai bien lu ... mais je pense que chaque fois que tu utilises
EcranPremier(), le code qui suit cette fonction n'est pas exécuté ...
Autrement dit, tu ne renvoies pas de valeur de retour ...
En esopérant t'avoir aidé ...
Bonjour,
je n'ai pas compris la fonction de cette façon et n'ai jamais rencontré
ce type de comportement. Mais effectivement, l'aide dit que les
traitement de sortie et d'entrée sont exécutés immédiatement. Cela peut
en effet provoquer un arret de traitement si elles incluent
RepriseSaisie, par exemple. Un test rapide confirme que la procédure
d'entrée du nouveau champ est exécuté avant tout autre code suivant
EcranPremier. Lisant la partie sous-ligné de l'aide je pensais toujours
que ces procédures ne s'exécutent qu'une fois le code en cours
s'arrêtera...
Salutations
mat
Extrait de l'aide :
EcranPremier et RepriseSaisie
Ces deux fonctions ont un comportement très différent :
La fonction RepriseSaisie arrête le traitement en cours pour forcer la
reprise de la saisie dans le champ indiqué.
La fonction EcranPremier décrit quel sera le prochain champ ayant la
saisie (lorsque le code en cours s'arrêtera et que la saisie reprendra).
=========================================================================
J'ai bien lu ... mais je pense que chaque fois que tu utilises EcranPremier(), le code qui suit cette fonction n'est pas exécuté ... Autrement dit, tu ne renvoies pas de valeur de retour ... En esopérant t'avoir aidé ...
Bonjour,
je n'ai pas compris la fonction de cette façon et n'ai jamais rencontré ce type de comportement. Mais effectivement, l'aide dit que les traitement de sortie et d'entrée sont exécutés immédiatement. Cela peut en effet provoquer un arret de traitement si elles incluent RepriseSaisie, par exemple. Un test rapide confirme que la procédure d'entrée du nouveau champ est exécuté avant tout autre code suivant EcranPremier. Lisant la partie sous-ligné de l'aide je pensais toujours que ces procédures ne s'exécutent qu'une fois le code en cours s'arrêtera...
Salutations mat
Extrait de l'aide :
EcranPremier et RepriseSaisie
Ces deux fonctions ont un comportement très différent :
La fonction RepriseSaisie arrête le traitement en cours pour forcer la reprise de la saisie dans le champ indiqué.
La fonction EcranPremier décrit quel sera le prochain champ ayant la saisie (lorsque le code en cours s'arrêtera et que la saisie reprendra). =========================================================================