VB : ByRef ... - Programmation
Marsh Posté le 06-04-2001 à 13:39:53
Avec ByRef var ne doit pas rester inchangé....
Dans ton cas pour que ça marche il faut :
Dim Var As Integer
Var = 1
Test Var
MsgBox ("Avant Test : 1 - Après Test : " & Str(Var))
Ou :
Dim Var As Integer
Var = 1
Call Test (Var)
MsgBox ("Avant Test : 1 - Après Test : " & Str(Var))
Marsh Posté le 06-04-2001 à 13:53:00
...
?
c'est vrai que je me suis deja heurté à ce truc ...
c'est quoi la difference alors entre :
Fonction parametre
Fonction(parametre)
call Fonction(parametre) (<= je sais qu'on perd la valeur de retour ...)
Marsh Posté le 06-04-2001 à 14:33:09
Ce n'est pas une histoire de différences.
En fait c'est une convention de VB, normalement seul Fonction parametre et call Fonction(parametre) sont authorisés. Il n'y a pratiquement aucune différence.
Le PB c'est que VB accepte Fonction (parametre) (sans message d'erreur) mais dans ce cas il ne modifie pas les variables passées en paramètre qu'il y ai Byref ou ByVal.
C'est un fonctionnement que je considère comme bizarre et surtout très dangereux si on ne fait pas attention.
Marsh Posté le 06-04-2001 à 13:24:04
Je sais c'est tout con et si je cherchais un peu je trouverais sans mal
...
Mais voila j'ai la flemme !!! et puis vous allez surement me repondre tres vite.
Byref (par défaut) : ca passe les arguments par référence c.a.d par adresse non ??? c.a.d que ca effectue pas une copie de la variable ... et qu'on travail directement sur elle ...
OK.
Bon alors pourquoi :
Sub Test(ByRef X As Integer)
X = 10
End Sub
Private Sub BoutonTest_Click()
Dim Var As Integer
Var = 1
Test (Var)
MsgBox ("Avant Test : 1 - Après Test : " & Str(Var))
End Sub
Var reste inchangée !!!!
En C quand on passe par adresse la variable est modifiée (normal on travail directement dessus)
Et là ? C'est magique !!! Comment il fait VB ????