PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Initialisation de variables
Initialisation de variables
Iniciado por adlmedia, 22,mar. 2006 07:16 - No hay respuesta
Publicado el 22,marzo 2006 - 07:16
bonjour,

Je rencontre un problème que je n'arrive pas à résoudre, j'ai besoin de vos lumières.

je développe un site basé sur une structure de composants web. La partie administration gère des administrateurs qui ont chacun access à des composants et à des pages de composants.

Les données administrateur sont stockée dans une structure. l'application marche parfaitement en local mais lors du déploiement sur linux, ca bloque à un endroit du code et je n'arrive pas à comprendre pourquoi. lors du login d'un administrateur j'ai invariablement l'erreur suivante:
La variable 'ComponentAuthorised' n'a pas encore été initialisée. Elle ne peut donc pas être utilisée.

Dump de l'erreur du module <WD90VM.DLL> <9.01Be>.

- Appel WL :
Traitement de <Procedures globales de ComponentAdministrator.IdentifyAdmAccess>, ligne <41>, thread <0>

- Niveau : erreur fatale (EL_FATAL)

- Code erreur : 1081

- Code erreur WD55 : 0

- Pas de code d'erreur système

- Pas de message d'erreur système

- Que s'est-il passé ?
La variable 'ComponentAuthorised' n'a pas encore été initialisée. Elle ne peut donc pas être utilisée.

- Pas d'info de debug

- Infos attachées :
EIT_DATEHEURE : 22/03/2006 04:07:24
EIT_PILEWL :
Procédure globale IdentifyAdmAccess (serveur) (Procedures globales de ComponentAdministrator.IdentifyAdmAccess), ligne 41
Clic de Submit ( FondAdminCentral ) (serveur) (FrameAdminComponent.FondAdminCentral.Submit), ligne 3

- Identifiant dans le .err : 1081

(0025, ERR_MSG_BOX)

Invalid or incomplete multibyte or wide character (2)


la partie du code qui bloque est celle ci:

Administrateur:ComponentAuthorised[Indice][1]=ComponentAccessModule:ComponentPageName


La procédure est celle-ci:


PROCEDURE IdentifyAdmAccess(AdminLogin,AdminPassword)

HExécuteRequête(AdminAccess,hRequêteDéfaut,AdminLogin,AdminPassword)
HLitPremier(AdminAccess,IDAdministrators)

SWITCH (HNumEnr(AdminAccess))
CAS 0:
// Aucun administrateur possédant de login et password n'a pu être identifié
Info("IDENTIFICATION IMPOSSIBLE","Vous avez peut-être mal renseigné vos données d'administrateur, veuillez recommencer s'il vous plait.")
Administrateur:AccessGranted=Faux
CAS 1:
// Identification réussie => on donne accès
Administrateur:AccessGranted=Vrai
Administrateur:sAdminID=AdminAccess.IDAdministrators
Administrateur:sAdminLevel=AdminAccess.AdminLevel
Administrateur:sAdminRubrique=AdminAccess.Category
Administrateur:sFirstName=AdminAccess.FirstName
Administrateur:sLastName=AdminAccess.LastName
Administrateur:ComponentUsed=AdminAccess.AuthorisedComponent


// Recuperation dans le tableau des pages d'accueil des composants authorisées pour l'administrateur
// Sélection des composants authorisés pour l'administrateur en cours
// Parcours de toutes les sous-chaînes
Indice est un entier=1
SousChaîne est une chaîne = ExtraitChaîne ( Administrateur:ComponentUsed , rangPremier , ":")

// Execution de la requete pour obtenir les pages autorisées
GetComponentMainPageName(SousChaîne)

Administrateur:ComponentAuthorised[Indice][1]=ComponentAccessModule:ComponentPageName
Administrateur:ComponentAuthorised[Indice][2]=ComponentAccessModule:ComponentLogicName

// info("Composant1 page",ComponentAccessModule:ComponentPageName)
// info("Composant1 composant",ComponentAccessModule:ComponentLogicName)

TANTQUE SousChaîne <> EOT
// On passe au composant suivant
SousChaîne = ExtraitChaîne (Administrateur:ComponentUsed, rangSuivant , ":" )
// Execution de la requete pour obtenir la page
GetComponentMainPageName(SousChaîne)
Indice+=1
Administrateur:ComponentAuthorised[Indice][1]=ComponentAccessModule:ComponentPageName
Administrateur:ComponentAuthorised[Indice][2]=ComponentAccessModule:ComponentLogicName
// info("Composant "+Indice+" page",ComponentAccessModule:ComponentPageName)
// info("Composant"+Indice+" composant",ComponentAccessModule:ComponentLogicName)
FIN


// Récupération des données du composant correspondant à la category par défaut de l'administrateur
pComponentCategory est une chaîne=Administrateur:sAdminRubrique
HExécuteRequête(GetComponentID,hRequêteDéfaut,pComponentCategory)
HLitPremier(GetComponentID,IDComponentFile)
Administrateur:DefaultComponentID=GetComponentID.IDComponentFile
Administrateur:DefaultComponentLogicName=GetComponentID.ComponentLogicName
Administrateur:sPageName=GetComponentID.ComponentMainPage
HAnnuleDéclaration(GetComponentID)


AUTRE CAS:
Info("IDENTIFICATION IMPOSSIBLE","Vous avez peut-être mal renseigné vos données d'administrateur, veuillez recommencer s'il vous plait.")
Administrateur:AccessGranted=Faux
END

// Renvoi de la structure à l'appelant
RENVOYER Administrateur

La structure administrateur est globale dans le composant et globale dans le projet appelant. je ne comprends pas pourquoi tout marche bien en local et lors du déploiement ca ne marche plus.

Si vous avez des idées je suis intéressé.

PS: Malgré ce petit problème, je vous encourage tous à développer les gros projet sur les bases des composant - Bravo PC SOFT