Existe-t-il un moyen pour renvoyer plusieurs variables (2 dans mons cas) en sortie d'une fonction?
Existe-t-il un moyen pour renvoyer plusieurs variables (2 dans mons cas) en sortie d'une fonction?
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.
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?
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
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?
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
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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 MyVar1=... MyVar2=... if MyFunction(myVar1, myVar2) then ...
comme le + comme opérateur de concaténation à la place du & habituel, le typage systématique etc.
Partager