PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile (précédentes versions) → erreur variable non déclarée
erreur variable non déclarée
Débuté par Ambroise, 13 déc. 2016 21:38 - 4 réponses
Posté le 13 décembre 2016 - 21:38
Bonjour,
J'ai une certaine habitude de WinDev et je teste pour la première fois la version mobile pour Android.
J-ai un bouton qui ouvre une fenêtre contenant une table.
Le code du bouton est le suivant :
OuvreFenêtreMobile(FEN_Fiche_acte,"A")

Le code d'initialisation de ma fenetre FEN_acte est
Procedure MaFenêtre(gsModeOuverture est une chaîne="A")
SI gsModeOuverture<>"A" ALORS
gnIdentActe est un entier=Droite(gsModeOuverture,Taille(gsModeOuverture)-2)
HLitRecherchePremier(Acte,IDActe,gnIdentActe)
SI HTrouve ALORS
FichierVersEcran()
FIN
FIN


Ma table contenue dans cette seconde fenêtre comprend dans l'initialisation le code
SI gnIdentActe>0 ALORS
TableSupprimeTout(MoiMême)
POUR TOUT Remboursement AVEC IDActe=gnIdentActe
HLitRecherchePremier(categorie_rbt,IDcategorie_rbt,Remboursement.IDcategorie_rbt)
TableAjoute(MoiMême,categorie_rbt.categorie_rbt_lib+TAB+Remboursement.date_remboursement+TAB+Remboursement.montant_remboursement+TAB+Remboursement.IDRemboursement)
FIN
TableTrie(MoiMême,"TABLE_FEN_Fiche_acte.COL_Date_remboursement")
FIN


Lorsque je génère l'application et la copie via USB sur mon téléphone, j'ai l'erreur suivante lorsque je clique sur mon bouton :
==============================
Erreur fatale
Erreur dans le traitement Initialisation de FEN_Fiche_acte.Table_fen_fiche_acte.
Vous avez appelé la fonction OuvreFille.
Accès à une variable non déclarée.
Dans les applications Java et Android, il est fortement déconseillé d'utiliser une variable avant déclaration.
Quitter l'application
=============================
Je ne comprends pas quelle est ma variable non déclarée.
Pouvez vous m'aider ?
Cordialement
Posté le 14 décembre 2016 - 10:25
Bonjour Ambroise,

tu viens de te faire avoir par une nouvelle valeur par défaut.

Quand tu créé un nouveau programme, dans ses options de compilations,
par défaut, les variables sont maintenant limitées au bloc de code dans
lesquelles elles sont déclarées...

Ici, "...gnIdentActe est un entier..." est déclarée DANS un bloc si, et
tu l'utilise ensuite EN DEHORS de ce bloc.

2 solutions :

1. tu déclare tes variables en début de code (plus lisible)

2. tu vas dans les options du projet et tu décoche l'option par défaut
en question, histoire de retrouver le comportement d'avant.


Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com

Le 12/13/2016 à 3:38 PM, Ambroise a écrit :
Bonjour,
J'ai une certaine habitude de WinDev et je teste pour la première fois
la version mobile pour Android.
J-ai un bouton qui ouvre une fenêtre contenant une table.
Le code du bouton est le suivant :
OuvreFenêtreMobile(FEN_Fiche_acte,"A")

Le code d'initialisation de ma fenetre FEN_acte est
PROCEDURE MaFenêtre(gsModeOuverture est une chaîne="A")
SI gsModeOuverture<>"A" ALORS
gnIdentActe est un
entier=Droite(gsModeOuverture,Taille(gsModeOuverture)-2)
HLitRecherchePremier(Acte,IDActe,gnIdentActe)
SI HTrouve ALORS
FichierVersEcran()
FIN
FIN


Ma table contenue dans cette seconde fenêtre comprend dans
l'initialisation le code
SI gnIdentActe>0 ALORS
TableSupprimeTout(MoiMême)
POUR TOUT Remboursement AVEC IDActe=gnIdentActe

HLitRecherchePremier(categorie_rbt,IDcategorie_rbt,Remboursement.IDcategorie_rbt)


TableAjoute(MoiMême,categorie_rbt.categorie_rbt_lib+TAB+Remboursement.date_remboursement+TAB+Remboursement.montant_remboursement+TAB+Remboursement.IDRemboursement)

FIN
TableTrie(MoiMême,"TABLE_FEN_Fiche_acte.COL_Date_remboursement")
FIN


Lorsque je génère l'application et la copie via USB sur mon téléphone,
j'ai l'erreur suivante lorsque je clique sur mon bouton :
==============================
Erreur fatale
Erreur dans le traitement Initialisation de
FEN_Fiche_acte.Table_fen_fiche_acte.
Vous avez appelé la fonction OuvreFille.
Accès à une variable non déclarée.
Dans les applications Java et Android, il est fortement déconseillé
d'utiliser une variable avant déclaration.
Quitter l'application
=============================
Je ne comprends pas quelle est ma variable non déclarée.
Pouvez vous m'aider ?
Cordialement
Posté le 14 décembre 2016 - 11:07
Merci.
Je savais que WD et WM ne fonctionnaient pas pareil... mais là, j'aurais pu chercher longtemps.

Du coup, si je comprends bien, TOUTES les variables doivent être déclarées en Global à l'init sur la fenetre concernée pour ne pas froisser android ?
Posté le 14 décembre 2016 - 13:20
Bonjour,


Le 12/14/2016 à 5:07 AM, Ambroise a écrit :
Merci.
Je savais que WD et WM ne fonctionnaient pas pareil... mais là, j'aurais
pu chercher longtemps.


Non, pas du tout, c'est pareil en WD et WM. Tu as juste créé un NOUVEAU
projet, avec ses options par défaut d'aujourdh'ui, au lieu d'ouvrir un
ancien projet migré avec ses options par défaut d'antant

Du coup, si je comprends bien, TOUTES les variables doivent être
déclarées en Global à l'init sur la fenetre concernée pour ne pas
froisser android ?


Pas du tout, encore une fois. Relis mon message précédent.

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com
Posté le 14 décembre 2016 - 18:20
Bonsoir,
Effectivement, j'avais lu trop vite.
J'ai donc sorti mes déclaration de variables des blocs d'itération et cela fonctionne. Par sécurité, j'ai également décoché dans la description du projet l'option correspondante par sécurité... pour moi.

Encore merci.