IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

où déclarer les variables globales ? [WD21]


Sujet :

WinDev

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut où déclarer les variables globales ?
    Bonjour,

    Mon problème concerne l'environnement de développement de WinDev.

    J'utilise occasionnellement WinDev depuis quelques jours. je suis familier du développement .net mais là je dois utiliser WinDev.

    Mon problème est élémentaire mais particulièrement déconcertant pour déclarer des variables partagées au niveau projet, module ou classe:
    Lors de la création d'un nouvel élément (dernièrement une classe) je n'ai pas de section "déclaration des globales" et je ne trouve pas comment faire apparaître cette section.

    J'essaie de déclarer une variable x dans la section "Déclaration de Nomdeclasse" de ma classe -> je ne peux pas l'utiliser dans un traitement de propriété: j'ai le message d'erreur "identificateur x inconnu ou inaccessible".

    Je ne vois rien dans le ruban qui me permette de faire apparaître cette section.

    Merci de bien vouloir me renseigner, la doc de WinDev restant muette sur les commandes de gestion de l'environnement de développement.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Tu veux déclarer une variable globale, ou un membre global dans une classe ?
    Si c'est une variable globale, ça se passe dans le code d'initialisation du projet.
    Si c'est un membre global de classe, il faut juste ajoute une ligne GLOBAL dans la déclaration de la classe:
    Code WinDev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MaClasse est une Classe
    PRIVE GLOBAL
    	mg_sVarGlobale est une chaine
    FIN
    Ensuite pour l'utiliser il faut la préfixer avec :: :
    Code WinDev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ::mg_sVarGlobale = ""

    Tatayo.

  3. #3
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    La déclaration d'une globale de classe a été expliquée par tatayo

    Si la section n'est pas déclarée privée ou protégée elle peut être accessible de l'extérieur par MaClasse::gMaVariable
    Dans ce cas il vaut mieux créer une propriété permettant uniquement de lire le membre global (clic droit sur le membre pour créer la propriété)

    Concernant les variables globales au projet on peut aussi les définir dans le code d'initialisation d'une collection de procédures
    Dans ce cas il veut mieux, en utilisation, préfixer le nom de la variable par celui de la collection (CP_Test.gMaVariable)

    A lire : http://doc.pcsoft.fr/fr-FR/?6010006&name=Classe_POO

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut et une variable statique ?
    Merci à vous pour vos réponses rapides.

    Sur la base de vos explications j'ai pu ébaucher ma classe.

    Une question subsidiaire, peut-on gérer des variables statiques avec WinDev, je veux dire une variable locale à une procédure qui conserve son état entre deux appels de la procédure?

    PS: Bonjour à la Polynésie...

  5. #5
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Non, pas de variable statique

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Malheureusement non, WinDev ne permet pas d'utiliser des variables statiques.
    Suivant le cas on peut "contourner" en utilisant un singleton.

    Peut-être en 23 ? Tiens, du coup je vais en faire la demande à PcSoft.

    Tatayo.

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut
    Merci Tatayo,
    On va donc patienter! D'un autre côté c'est vrai que les moyens de contourner le problème existent et en particulier le recours aux variables de portée supérieure.

  8. #8
    Membre averti Avatar de tunizar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 573
    Points : 427
    Points
    427
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Tu veux déclarer une variable globale, ou un membre global dans une classe ?
    Si c'est une variable globale, ça se passe dans le code d'initialisation du projet.
    Si c'est un membre global de classe, il faut juste ajoute une ligne GLOBAL dans la déclaration de la classe:
    Code WinDev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MaClasse est une Classe
    PRIVE GLOBAL
    	mg_sVarGlobale est une chaine
    FIN
    Ensuite pour l'utiliser il faut la préfixer avec :: :
    Code WinDev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ::mg_sVarGlobale = ""

    Tatayo.
    Bonjour,
    Les :: ou : ne sont plus obligatoire.

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut
    Précision intéressante, elle évite de la frappe fastidieuse!

  10. #10
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Citation Envoyé par Depite Voir le message
    Précision intéressante, elle évite de la frappe fastidieuse!
    Même pas, car en les rendant obligatoires, Windev les ajoute si tu les oublies.
    Moi je préfère les mettre, comme ça je sais immédiatement à quoi j'ai affaire (membre, membre global ..). On peut certes personnaliser le préfixage mais je préfère quand même les : ou ::
    Chacun a la possibilité de choisir sa façon de travailler

  11. #11
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Quand on considère que la frappe de :: est fastidieuse, on n'est pas très loin de penser que la saisie de commentaires ou de documentation est fastidieuse, et ce n'est pas bon signe.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    L'absence de variables statiques dans une procédure oblige à passer par des variables globales, ce qui est n'est vraiment pas pareil.

    Etant avant tout un programmeur bas niveau, j'ai développé une solution qui s'appuie sur l'API LISTBOX pour simuler des variables statiques.
    Au besoin je peux vous en faire profiter, si comme moi, vous êtes allergique à l'utilisation de variables globales pour ce genre de chose.

    Le concept est expliqué ici !
    http://www.jose.it-berater.org/smffo...sg3147#msg3147

    La version WL, adaptée pour WinDev, est une variante du code expliqué dans le lien ci-dessus.

    ...

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut
    Bon, je vois que le sujet est suivi!

    1. Pour ce qui est des commentaires et de la documentation je vais tâcher d'y penser, merci de me le rappeler tbc92
    2. Pour ce qui relève du sujet de cette discussion, merci Patrice, ton procédé est assurément efficace mais un peu disproportionné par rapport aux projets que j'aborde (je ne viens à WinDev que pour quelques applications mobiles très limitées).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Les variables globales en C++
    Par jeje99 dans le forum C++
    Réponses: 4
    Dernier message: 03/02/2006, 15h52
  2. Réponses: 13
    Dernier message: 21/11/2005, 11h05
  3. Supprimer la mémoire utilisée par les variables globales
    Par dnaprotector dans le forum OpenGL
    Réponses: 4
    Dernier message: 21/07/2005, 13h18
  4. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo