Creer et passer en parametre un arraylist de stucture [Résolu]

Messages postés
166
Date d'inscription
mercredi 23 avril 2003
Dernière intervention
16 février 2011
- - Dernière réponse : NSUADI
Messages postés
540
Date d'inscription
mardi 4 août 2009
Dernière intervention
1 février 2013
- 16 févr. 2011 à 17:34
Bonjour

J'aimerais creer un arraylist d'une structure et passé celui ci dans une fonction qui aura pour objectif de le remplir.

Exemple :

Structure mastruc
        Public nom As String
        Public Prenom As String
End Structure

Sub Principal()
    dim retour as integer
    Dim montableau as ???? ' un arraylist de ma structure
    ' APPEL MA FONCTION ET REMPLI MON ARRAY
    retour=Rempli_mastructure(montableau) '?
    for i=0 to montableau.lengh
        writeln(montable(i).nom
    next i
end sub

Function Rempli_mastruct(byref tableau as mastruct) as integer
    ' Ajoute 2 élement au tableau mastructure
    for i=0 to 2
        tableau(i).nom="Testnom"+i.tostring
        tableau(i).prenom="Testprenom"
    next
    return 0
End Function


Je n'ai pas la moindre idée de comment faire.

Si quelqu'un pouvait me donner une piste.

D'avance merci.

ThonyBoy
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Dernière intervention
17 novembre 2012
6
3
Merci
Bonjour,
Essaie une liste typée : list(of ...)



    Structure maStructure
        Public nom As String
        Public prenom As String
    End Structure

    Sub Principal()
        'Créer une liste d'éléments maStructure
        Dim montableau As New List(Of maStructure)
        'Ajouter des éléments à la liste
        Remplit_maStructure(montableau)
        For Each elt As maStructure In montableau
            Console.WriteLine(elt.nom)
        Next
    End Sub

    Sub Remplit_maStructure(ByRef tableau As List(Of maStructure))
        ' Ajouter 3 élements au tableau maStructure
        Dim elt As maStructure
        For i As Integer = 0 To 2
            elt.nom = "TestNom_" + i.ToString
            elt.prenom = "TestPrenom"
            tableau.Add(elt)
        Next
    End Sub
  

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de mdevaux62
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
20 novembre 2013
8
0
Merci
Salut,

euuuuh c'est une question piege ?!?!

Dim montableau as mastruc

devrait faire l'affaire !

pour le reste cela me parait correct, mise à part que dans ton cas je ne vois pas trop l’intérêt d'avoir une valeur en retour.
Donc une sub plutôt qu'une fonction

de fait, je ferai comme cela :

Sub Principal()
    dim retour as integer
    Dim montableau as mastruc ' un arraylist de ma structure
    ' APPEL MA FONCTION ET REMPLI MON ARRAY
    Rempli_mastructure montableau 'je ne connai pas le vb.net ou vb2005 donc vérifie la syntaxe avant d'essayer
    for i=0 to montableau.lengh
        writeln(montable(i).nom
    next i
end sub

Sub Rempli_mastruct(byval tableau as mastruct) 'byval me semble plus approprié
    ' Ajoute 2 élement au tableau mastructure
    for i=0 to 2
        tableau(i).nom="Testnom"+i.tostring
        tableau(i).prenom="Testprenom"
    next
End sub


A+
Commenter la réponse de bigfish_le vrai
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Dernière intervention
17 novembre 2012
6
0
Merci
BigFish, tu as testé avant de poster ?
Commenter la réponse de mdevaux62
Messages postés
540
Date d'inscription
mardi 4 août 2009
Dernière intervention
1 février 2013
2
0
Merci
Salut,

Tu peux le faire en utilisant les tableaux comme ceci:
 Structure maStructure
        Public nom As String
        Public prenom As String
    End Structure

 Sub Principal()
        'Créer une liste d'éléments maStructure
          Dim d() As maStructure
          ReDim d(2) 'tu redimensionnes selon que tu désires
        'Ajouter des éléments à la liste
        Remplit_maStructure2(d)
        For i = 0 To d.Length - 1
            Console.WriteLine(d(i).nom + " " + d(i).prenom)
        Next
    End Sub

Sub Remplit_maStructure2(ByRef tableau() As maStructure)
        ' Ajouter 3 élements au tableau maStructure

        For i As Integer = 0 To 2
            tableau(i).nom = "TestNom_" + i.ToString
            tableau(i).prenom = "TestPrenom_" + i.ToString
        Next
End Sub


Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
Commenter la réponse de NSUADI
Messages postés
166
Date d'inscription
mercredi 23 avril 2003
Dernière intervention
16 février 2011
0
Merci
Un grand merci a Mdevaux62 et NSuadi.

J'ai testé avec succés la proposition de Mdevaux62.
Du coup je n'ai pas testé celle de NSuadi mais peut etre qu'elle fonctionne également. Sauf que je voulais éviter un tableau à cause du Redim qui n'est pas trés optimisant. (D'autant que je ne connais pas a l'avance le nombre d'elément ce qui m'obligerait a faire un redim +1 dans ma boucle)

A bigfish, je ne comprend pas pourquoi tu répond si tu ne connais pas vb net... Quand a la valeur de retour, il vrai que j'ai simplifié le plus possible mon probleme donc mon code exemple. Mon code est plus complexe est fait bien sur autre chose que la boucle qui rempli mon tableau avec des valeur bidons. C'était juste pour illustrer.

En tout cas c'est souhaite l'entraide. Encore merci
Commenter la réponse de thonyboy
Messages postés
540
Date d'inscription
mardi 4 août 2009
Dernière intervention
1 février 2013
2
0
Merci
@thonyboy:
Du coup je n'ai pas testé celle de NSuadi mais peut etre qu'elle fonctionne également.Sauf que je voulais éviter un tableau à cause du Redim qui n'est pas trés optimisant.


Je peux t'assurer qu'elle fonctionne mais bon c'est vrai,tu as raison...j'y ai pensé moi aussi avant de poster mais bon une solution de plus ne peux pas faire de mal.

à ciao,bonsoir!!!

Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
Commenter la réponse de NSUADI

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.