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 :

[WD 9] Renvoyer plusieurs valeurs


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 35
    Points
    35
    Par défaut [WD 9] Renvoyer plusieurs valeurs
    Salut à tous !

    J'ai créé une procédure, et je cherche à renvoyer plusieurs valeurs de cette dernière...

    En utilisant la fonction "RENVOYER" comme ceci:
    RENVOYER valeur1
    RENVOYER valeur2
    RENVOYER valeur3
    ça ne fonctionne pas, car lorsque que la première instruction "RENVOYER" est lu, le compilateur quitte la procédure...

    Quelqu'un a-t-il une solution ?

    Merci d'avance pour votre aide !

  2. #2
    Membre confirmé
    Profil pro
    Freelance
    Inscrit en
    Avril 2003
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Avril 2003
    Messages : 393
    Points : 492
    Points
    492
    Par défaut
    Soit tu utilises des variables globales, soit tu ajoutes des séparateurs (par exemple des pipes) entre tes valeurs.
    Bonne journée

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Le plus propre reste encore des paramètres en mise à jour.
    Si le nombre de valeurs renvoyées est variable, passez par un tableau.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    Merci !

    Je serais intéressé par le système des paramètres en mise à jour...

    tu pourrais m'en dire un peu plus ?

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Par défaut dans Windev, les paramètres d'une fonction, procédure, ... sont passés par référence. Cela implique que si vous modifiez la valeur d'un paramètre dans votre procédure, une fois sorti de la procédure, la valeur aura bien été modifiée côté code appelant.

    A la différence, un paramètre passé par valeur retrouvera sa valeur d'origine une fois sorti de la procédure. En windev, il faut mettre LOCAL avant la déclaration de son paramètre pour un passage par valeur, sinon on est en passage par référence par défaut.


    Pour raccourcir, sous windev, par défaut, un paramètre modifié dans une procédure aura sa valeur mise à jour dans le code appelant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    PROCEDURE IncrementeParRef (pValeur est un entier)
     
    pValeur++
     
     
    PROCEDURE IncrementeParVal (LOCAL pValeur est un entier)
     
    pValeur++
     
     
    //Code de test
     
    a est un entier = 1 
    b est un entier = 1
     
    IncrementeParRef(a)
    info(a) //affiche 2
     
    IncrementeParVal(b)
    info(b) //affiche 1

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    ok !

    Donc, j'utiliserai le passage par valeur des paramètres.

    Mais pour récupérer ses paramètres, je fais comment ?

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Non justement c'est bien le passage par référence (par défaut) qu'il vous faut.

    Par contre, si vous ne connaissez pas la théorie sur les fonctions, les paramètres, ... vous avez besoin d'un petit cours.

    http://fr.wikipedia.org/wiki/Param%C3%A8tre

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    Heu ouai excuse-moi... J'ai inversé les termes...

    Mais par contre, il est impossible de récupérer la valeur de plusieurs paramètres d'une procédure sans utiliser de variables globales ? et sans passer par un tableau ?

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Si tu passes plusieurs paramètres, tu peux tous les récupérer, tu en mets autant que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE MaProcedure(pParam1, pParam2, pParam3, ..., pParamN)

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    Ouai, pour la déclaration des variables d'entrée à la procédure, il n'y a pas de problème.

    Je parlais, de les récupérer les paramètres de sortie...

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a,b,c sont des entiers
     
    //a b c ne sont pas modifeés
    MaProcedureQuiModifieMesParametres (a,b,c)
    //a b c sont maintenant modifiés

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    finalement je vais utliser la fonction du tableau avec 3 valeurs à l'intérieur que je vais renvoyer :

    Code de la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    PROCEDURE maProcédure(para)
     
       tab_resultat est un tableau de 3 Variants
     
       tab_resultat[1] = résultat1
       tab_resultat[2] = résultat2
       tab_resultat[3] = résultat3
     
       RENVOYER tab_resultat
    Par contre je ne vois pas comment récupérer les 3 variables du tableau qui est renvoyé...
    Code de l'appel de la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maProcédure(para)
    //Récupération des 3 valeurs du tableau renvoyé
    Quelqu'un sait-il ?

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Je ne vois pas l'utilité de RENVOYER alors que tu passes un paramètre ?

    Code d'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tab_resultat est un tableau de 3 Variants
     
    TestRenvoi(tab_resultat)
    Info(tab_resultat[1]+RC+tab_resultat[2]+RC+tab_resultat[3])
    Procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PROCEDURE TestRenvoi(tab_resultat)
     
    tab_resultat[1] = 1
    tab_resultat[2] = 2
    tab_resultat[3] = 3

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    Finalement, j'ai opté pour une tout autre stratégie, ce qui me permet de me passer de ce système...

    Mais merci à vous tous pour vote aide, qui me sera quand même utile !

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

Discussions similaires

  1. Renvoyer plusieurs valeurs avec une fonction
    Par Kestion100 dans le forum Excel
    Réponses: 4
    Dernier message: 10/12/2014, 11h56
  2. renvoyer plusieurs valeurs
    Par clouddd dans le forum Services Web
    Réponses: 3
    Dernier message: 13/10/2009, 14h20
  3. [WD12] Renvoyer plusieurs valeurs à la fermeture d'une fenêtre
    Par Gaetch dans le forum WinDev
    Réponses: 17
    Dernier message: 19/02/2009, 11h20
  4. Réponses: 3
    Dernier message: 13/11/2008, 09h21
  5. Réponses: 8
    Dernier message: 06/04/2006, 18h45

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