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

VB 6 et antérieur Discussion :

Plusieurs variables en sortie d'une fonction


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut Plusieurs variables en sortie d'une fonction
    Existe-t-il un moyen pour renvoyer plusieurs variables (2 dans mons cas) en sortie d'une fonction?

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Une fonction ne peut renvoyer qu'une seule valeur. Par contre, elle peut modifier les parametres en entrée s'il sont passé par référence.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    Ca veut dire qu'une variable placer en variable d'entrée d'une fonction peut etre modifie et cette modification sera automatiquement prise en compte dans la fonction principale?

    Ou peut etre il y a-t-il une méthode auquel cas peux tu la préciser?

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    ou encore : définis une structure et type la valeur de retour de ta fonction sur cette structure.
    Edit :

    Voilà deux manières de s'exprimer avec une structure :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Type titi
      a As String
      b As String
      c As Integer
    End Type
     
    Private Sub Command1_Click()
      MsgBox toto("français").a & vbCrLf & toto("français").b & vbCrLf & toto("français").c
      MsgBox toto("anglais").a & vbCrLf & toto("anglais").b & vbCrLf & toto("anglais").c
    End Sub
     
    Private Function toto(monparam As String) As titi
      If monparam = "français" Then
        toto.a = "bonjour"
        toto.b = "toi"
        toto.c = 1
      Else
        toto.a = "hello"
        toto.b = "you"
        toto.c = 2
      End If
    End Function
     
    Private Sub Command2_Click()
     'ce que tu peux écrire également ainsi :
      Dim tata As titi
      tata = toto("français")
      MsgBox tata.a & vbCrLf & tata.b & vbCrLf & tata.c
      tata = toto("anglais")
      MsgBox tata.a & vbCrLf & tata.b & vbCrLf & tata.c
    End Sub

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    Merci a vous deux avec le ByRef, cela fonctionne.
    Du coup Delbeke pense tu qu'il faille que je precise dans toutes mes fonctions les ByVal et les ByRef (quesiton de l'isibilité)

    Et ta méthode ucfoutu permet des créer ses propres objets non?

  6. #6
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Il est intéressant de préciser le ByRef ou le ByVal dans la mesure ou la dernière mouture de Vb (Vb.Net) a inversé le type de passage par défaut. Le type de passage de référence pour Vb1 à Vb6 est ByRef par défaut.

    Ce que t'a montré ucfoutu est ce que l'on nomme un type de variable défini par l'utilisateur (UDT) et quoique il ressemble un peu à un objet, ce n'en est pas un. Pas de propriété, méthode ni evénement

  7. #7
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    La bonne méthode à utiliser est celle citée par Delbeke :
    la plupart des functions retournées par les librairies C fonctionnent ainsi -
    la valeur de retour est utilisée pour retournée le comportement de la fonction (vrai/faux ou code d'erreur).

    Ce qui donne depuis la fonction d'appel un code du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MyVar1=...
    MyVar2=...
    if MyFunction(myVar1, myVar2) then
    ...
    Il est bon aussi de rappeler qu'il faut perdre les mauvaises habitudes afin de rendre les codes compatibles en vue d'un éventuel portage
    comme le + comme opérateur de concaténation à la place du & habituel, le typage systématique etc.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    Merci a tous uen dernière question en rapport avec les Byref
    Il arrive que dans mes fonctions une variable puisse porter le meme nom que dans ma fonction principale. De ce fait je ne comprend pas bien la logique qui veut que je n'ai parfois pas besoin de déclarer cette meme variable dans ma sous fonction (sous risque de bug), je ne la declare ni par reference ni a l'interieur de la sous fonction nul par quoi.
    Pouvez vous m'expliquer?

  9. #9
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Sans déclaration en début de module de «Option Explicit»
    les variables sont déclarées implicitement (Variant) avec une portée liée à l'endroit où elles sont utilisées.
    En utilisant Option Explicit, tu constateras que VB refuse l'exécution de code
    dès qu'une seule variable n'est pas déclarée :
    c'est d'autant recommandé qu'indispensable pour un portage ultérieur sous .net

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/08/2007, 00h40
  2. Utilisation de variables de Gui dans une fonction
    Par campofelliz dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 20/08/2007, 18h46
  3. Variable de sortie de la fonction Imcontour
    Par emilieGre dans le forum Images
    Réponses: 3
    Dernier message: 18/07/2007, 13h49
  4. Execution a la sortie d'une fonction
    Par cococococococo dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 10/07/2007, 15h21
  5. Réponses: 6
    Dernier message: 18/04/2007, 12h47

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