[vb6] transmettre un tableau par procédure

Contenu du snippet

Tout le monde connait les tableaux...

Depuis toujours je pensais qu'il n'été pas possible de les transmetrent par procédure sous VB6, et bien je me trompé, alors que je me balader dans MSDN j'ai trouvé un indice qui me faisait pensait le contraire.

Bien que cette source soit bidon, je sait que bon nombre ne savent pas que c'est faisable car je m'étais déjà renseigné sans succés, du coup je post cette source pour en faire profité tout le monde...

Voir l'exemple :

Source / Exemple :


'Dans un module :

'La fonction qui renvoie un tableau
Public Function Tableau_Procedure() As String()

    'On crée tout d'abord un tableau temporaire car je ne sait pas pourquoi mais
    'il n'est pas possible de redimensionné le tableau de la fonction elle même
    Dim Tableau_Temporaire() As String
    'J'ai laisser vide entre les parenthèses, ce qui signifie que le tableau est
    'dynamique
    
    'Comme on a un tableau dynamique il faut l'initialisé en lui donnant une taille
    ReDim Preserve Tableau_Temporaire(0)
    'Voilà, on à une taille de zéro, maintenant on peut travailler avec
    
    'Ici on créer une boucle pour remplir ce tableau temporaire
    For i = 1 To 10
        
        'On le redimensionne pour qu'il puisse accueillir une nouvelle valeur
        ReDim Preserve Tableau_Temporaire(UBound(Tableau_Temporaire) + 1)
        
        'On entre cette nouvelle valeur
        Tableau_Temporaire(i) = i
        
    Next i
    
    'Maintenant que le tableau temporaire est remplit, on peut transférer ses
    'données au tableau de la procedure
    Tableau_Procedure = Tableau_Temporaire

End Function

________________________________________________________

'Dans un formulaire :

'On dispose un CommandButton et une LitBox pour tester le résultat

Private Sub Command1_Click()

    'Ici on créer aussi un tableau pour récupérer les valeurs de la fonction
    Dim Tableau_Form() As String

    'On récupère les valeurs
    Tableau_Form = Module1.Tableau_Procedure
    
    'Et maintenant on fait une boucle pour afficher les résultat dans
    'la zone de liste depuis le tableau précédemment rempli
    For i = 0 To UBound(Tableau_Form)
        List1.AddItem Tableau_Form(i)
    Next i
    
End Sub

'On ne peut pas travailler directement avec le tableau du module car on ne peut pas
'appeler sont index :

    'Exemple :
    List1.AddItem Module1.Tableau_Procedure(i)

    '"Module1.Tableau_Procedure(i)" équivaudrais à vouloir passer un paramètre à la fonction
    'et non pas indiquer un index...

Conclusion :


Ca marche tout simplement.

A voir également

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.