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 éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    257
    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 : 257
    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 confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 371
    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
    Membre Expert
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    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 éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    257
    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 : 257
    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
    Membre Expert
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Par défaut
    Non, pas de variable statique

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

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 371
    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 éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    257
    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 : 257
    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 très actif 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
    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 éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    257
    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 : 257
    Par défaut
    Précision intéressante, elle évite de la frappe fastidieuse!

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

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    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 200
    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 200
    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.

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 564
    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 éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    257
    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 : 257
    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