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.NET Discussion :

Une FUNCTION peut-elle renvoyer un tableau ?


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 62
    Points : 43
    Points
    43
    Par défaut Une FUNCTION peut-elle renvoyer un tableau ?
    Bonjour,

    je lis abondamment l'excellent cours VB.NET de Philippe Lasserre mais une chose m'échappe encore :

    une Function peut-elle renvoyer un tableau ? si oui, pouvez-vous m'en montrer un exemple ?
    Si non, comment faire cela avec une Sub, de manière propre ?

    ou bien suis-je obligé de passer par une classe qui aurait deux propriétés (tableau de 2 éléments) ?

    en fait, je cherche à programmer une fonction qui renvoie les coordonnées d'un point, lui-même obtenu par calcul : le résultat doit être une abscisse et une ordonnée, voila pourquoi j'ai pensé à un tableau. Mais je crois que je peux aussi passer par une classe en lui ajoutant deux property ?? je suis perdu !

    Merci

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    oui une fonction peut renvoyer un tableau, encore qu'il vaut mieux l'éviter si c'est pour renvoyer des éléments connexes comme pour des coordonnées. Danc ce cas une structure ou une classe est plus adaptée.
    Enfin dans ton cas tu peux très bien renvoyer un type comme PointF

  3. #3
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function Coordonnees() as SortedList
    Dim x as Integer = 56
    Dim y as Integer = 5
    Dim result as new SortedList
    result.add(x,y)
     
    Return Result
    End Function
    C'est une solution parmis d'autre...
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    Merci pour vos réponses rapides.

    J'ai essayé avec la classe SortedList en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label2.Text = Coordonnees.GetByIndex(1)
    mais cela ne fonctionne pas. Et zut, j'ai du mal calibrer quelque chose, peut etre dois je déclarer la classe utilisée avant, la je m'y perds car les classes, c'est tout nouveau pour moi. Je vais lire al doc sur le sujet chez P. Lasserre et ensuite je reviens vous embêter (peut-être )

    Merci encore.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    j'ai essayé avec la structure Point. C'est parfait à ceci près que les valeurs renvoyées par Point.X et Point.Y sont des entiers. Je n'y arrive décidément pas, comment fait-on pour déclarer une même structure avec Coord.X et Coord.Y qui renvoyent des Double ?

  6. #6
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par flyjodel
    j'ai essayé avec la structure Point. C'est parfait à ceci près que les valeurs renvoyées par Point.X et Point.Y sont des entiers. Je n'y arrive décidément pas, comment fait-on pour déclarer une même structure avec Coord.X et Coord.Y qui renvoyent des Double ?
    Avec mon code ci haut en modifiant avec des double
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function Coordonnees() as SortedList
      Dim x as Double= 56.12
      Dim y as Double= 5.45
      Dim result as new SortedList
      result.add(x,y)   
      Return Result
    End Function
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    merci pour ta réponse. En fait j'essaye en même temps de comprendre comment fonctionne une classe car je souhaite y rajouter plusieurs propriétés, méthodes etc. mais je bute sur des écueils théoriques.

    Dans Form1.vb j'appelle une fonction qui se trouve dans un module nommé module1.vb
    J'ai aussi créé une feuille qui contient une classe ainsi définie (stade d'ébauche, j'apprends) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Class CoordGPS
        Public Lat As Double
        Public Lon As Double
    End Class
    Dans le module moudule1.vb, j'ai déclaré la chose suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Module trigoGPS
     
        Dim cGPS As New CoordGPS
     
        Public Sub CalculProjection(ByVal angle As Double)
            cGPS.Lat = 49.4541
            cGPS.Lon = 3.55015
        End Sub
    puis, dans Form1, j'entre le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Class Form1
     
        Dim classeGPS As New CoordGPS
     
        Private Sub but1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles but1.Click
     
            CalculProjection(textbox1.Text)
     
            Label2.Text = classeGPS.Lat
            Label3.Text = classeGPS.Lon
     
        End Sub
     
    End Class
    évidemment cela ne fonctionne pas. Quelqu'un pourrait-il m'aider et me dire ce qui ne va pas dans ma structure ? Je sens bien que le fait de déclarer classeGPS dans la Form et cGPS dans le module ne me permettront pas d'obtenir les mêmes valeurs, mais comment feriez-vous ?

    Merci, je patauge...

  8. #8
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    ca m'etonne pas que ca marche pas

    En fait deja ton argument que tu passes est un string, or toi tu veux un double !
    donc il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CalculProjection(Cdbl(Textbox1.text))
    Ensuite ta procédure ne retourne rien ! Donc on va créer une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Public Function CalculProjection(ByVal angle As Double) as CoordGPS
            cGPS.Lat = 49.4541
            cGPS.Lon = 3.55015
     
            Return cCPS 'retourne le resultat !
        End Sub
    Une fois que tu as le resultat on va modifier le code dans la form1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Class Form1
       Dim classeGPS As CoordGPS   
      Private Sub but1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles but1.Click  
     
       classeGPS  = CalculProjection(Cdbl(Textbox1.text))  'recupere le resultat
       Label2.Text = classeGPS.Lat.Tostring  
       Label3.Text = classeGPS.Lon.Tostring   
      End Sub   
    End Class
    Et voila cela devrait marcher
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    merci !

    entre temps j'ai avancé sur mon projet en modifiant quelques petites choses et je prends du plaisir à programmer avec ce langage où tout semble plus simple... Mais bon, il y a encore du boulot ;-)

    merci encore pour l'aide

  10. #10
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par flyjodel
    je prends du plaisir à programmer avec ce langage où tout semble plus simple... Mais bon, il y a encore du boulot ;-)
    Et oui c'est pour cela qu'on a inventé la version .NET de Visual Basic ^^ Plus intuitive et plus puissante, bref un petit bonheur ^^
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

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

Discussions similaires

  1. Une function peut elle retourner un tableau ?
    Par zarbouine dans le forum Delphi
    Réponses: 3
    Dernier message: 11/01/2007, 20h45
  2. une Dll peut elle utiliser les fonctions d'une autre dll?
    Par kantelise dans le forum Windows
    Réponses: 7
    Dernier message: 18/05/2006, 03h45
  3. Réponses: 10
    Dernier message: 15/05/2006, 11h18
  4. Une fonction peut-elle retourner plusieurs résultats ?
    Par aragorns dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/03/2005, 22h18
  5. Réponses: 5
    Dernier message: 25/11/2003, 10h02

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