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 :

Prise de référence sur un entier


Sujet :

WinDev

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Octobre 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 254
    Points : 608
    Points
    608
    Par défaut Prise de référence sur un entier
    Bonjour,

    Est il possible dans Windev de faire une prise de référence sur une variable de type entier (et non pas un objet) ?

    Mon problème est le suivant :

    Soit une classe cMaClasse avec un constructeur qui accepte un paramètre par adresse :

    L'appel depuis une fenêtre est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    eID est un entier = 0
    MonObjet est un cMaClasse(eID)
    Dans mon constructeur, si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Constructeur(eParamID est un entier)
    eParamID = 1
    eID vaut aussi 1 quand je reviens dans le code de la fenêtre.

    Ca c'est normal : c'est le principe du passage par adresse.

    Le problème, c'est que je ne peux pas faire pointer une autre variable sur celle ci, si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Déclarations de cMaClasse
     
    LOCAL
       :eMembre est un entier
    FIN
     
    Constructeur(eParamID est un entier)
    :eMembre =  eParamID
    :eMembre = 1
    Là quand je reviens dans le code de la fenêtre, eID vaut toujours 0.
    :eMembre ne référence pas eID

    Comment faire pour qu'une modification de :eMembre dans la classe modifie aussi le variable passée au constructeur (sachant que l'on parle ici de variables simples, pour les objets il n'y a pas de difficulté) ???

    Par exemple, on pourrait imaginer de pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    :eMembre <- eParamID
    ... sauf que ça ne fonctionne que sur les objets ou les variables "complexes" (tableaux...)

    Merci d'avance pour vos suggestions, Arnaud.

  2. #2
    Membre confirmé Avatar de jimmypage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 314
    Points : 474
    Points
    474
    Par défaut
    Salut,

    A priori la prise de référence ne marche que pour des variables de type avancé dynamiques ou des objets.
    Donc si tu passe par un entier tu n'auras pas cette possibilité.
    Dans ton code il doit être possible de faire:

    classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Déclarations de cMaClasse
     
    LOCAL
       :eMembre est un tableau dynamique de 1 variant
    FIN
     
    Constructeur(eParamID)
    :eMembre <- eParamID
    :eMembre[1] = 1
    fenetre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    eID est un tableau dynamique de 1 variant
    eID[1]=0
    MonObjet est un cMaClasse(eID)
    info(eID[1]) //logiquement devrait afficher "1"
    résultat non garanti mais a priori ca marche comme ca


    EDIT: testé en WD16 ca marche.. par contre en 15 je ne peux pas te dire

  3. #3
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 751
    Points
    9 751
    Par défaut
    Je ne comprend pas trop ce que tu veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Déclarations de cMaClasse
     
    LOCAL
       :eMembre est un entier
    FIN
     
    Constructeur(eParamID est un entier)
    :eMembre = 1
    eParamID =  :eMembre
    En sortie du constructeur, eParamID vaudra bien 1 !
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  4. #4
    Membre confirmé Avatar de jimmypage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 314
    Points : 474
    Points
    474
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    Je ne comprend pas trop ce que tu veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Déclarations de cMaClasse
     
    LOCAL
       :eMembre est un entier
    FIN
     
    Constructeur(eParamID est un entier)
    :eMembre = 1
    eParamID =  :eMembre
    En sortie du constructeur, eParamID vaudra bien 1 !
    Ce doit être pour ne pas à avoir à affecter la valeur à eParamID à chaque fois que l'on modifie la valeur de eMembre (je suppose)

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Octobre 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 254
    Points : 608
    Points
    608
    Par défaut
    Non pas du tout.

    Une fois revenu dans le code appelant, le paramètre passé vaudra toujours 0.

    Windev n'accepte pas les prises de référence en cascade sur les types simples.

    La réponse de jimmipage est la bonne : il faut passer par des types "avancés" (objet, structure) qui wrappent le type simple.

    Une autre technique est également donnée ici :
    http://forum.pcsoft.fr/thread.awp?gr...4&start=81&v=2

    J'ai besoin de faire ceci parce qu'évidemment mon paramètre passé au constructeur peut être modifié par plusieurs méthodes de ma classe, et donc j'ai besoin de référencer ce paramètre dans une variable de ma classe.

    Citation Envoyé par Jon Shannow Voir le message
    Je ne comprend pas trop ce que tu veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Déclarations de cMaClasse
     
    LOCAL
       :eMembre est un entier
    FIN
     
    Constructeur(eParamID est un entier)
    :eMembre = 1
    eParamID =  :eMembre
    En sortie du constructeur, eParamID vaudra bien 1 !

Discussions similaires

  1. Réponses: 10
    Dernier message: 23/11/2005, 21h20
  2. champ de référence sur un DBGrid
    Par ithery75 dans le forum Bases de données
    Réponses: 4
    Dernier message: 19/11/2005, 10h55
  3. [C.R .8.5] doublons de référence sur groupes différents
    Par leuke dans le forum SAP Crystal Reports
    Réponses: 24
    Dernier message: 14/11/2005, 11h15
  4. Comment avoir une référence sur une Vue
    Par Philippe299 dans le forum MFC
    Réponses: 1
    Dernier message: 12/08/2005, 10h03
  5. [DB2] LIKE sur des entiers
    Par heloise dans le forum DB2
    Réponses: 1
    Dernier message: 07/10/2004, 23h30

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