BozzoDodo
Messages postés185Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention10 janvier 2008
-
30 nov. 2004 à 18:00
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
1 déc. 2004 à 19:10
Bonjour,
j'ai une fonction:
f1(Optional Byref Cancel)
Si Cancel est spécifié alors dans la fonction si on écrit: Cancel=True, la variable à laquelle fait référence Cancel sera True, ce qui est normal.
Mais si Cancel n'est pas spécifié (après tout c'est optionnel donc... lol), Si j'écris Cancel=True, à quelle variable Cancel fait-il référence? Une variable non déclaré?!
J'espère que vous aurez compris mon problème. Merci!
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 30 nov. 2004 à 18:51
Hein ? Si tu écris Cancel = True dans la sub, alors le "Cancel" correspond à la variable passée par paramètre.
En dehors de la sub, ca correspond à une variable "Cancel" déclaré dans l'espace de nom où tu te trouve. Si celle-ci n'est pas déclarée, alors elle ne correspond à aucune variable, et soit VB te signale une erreur (avec le Option Explicit), soit te déclare une nouvelle variable locale à l'espace de nom actuel.
_______________________________________
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 1 déc. 2004 à 07:21
Un espace de nom correspond à l'endroit du code où se trouve ta ligne : s'il est à l'intérieur d'une procédure, ton espace de nom correspond à cette procédure.
Si tu te trouve à l'extérieur d'une procédure, mais à l'intérieur d'une form, ton espace de nom correspond à ta form. etc.
Mais pourquoi veux-tu faire Cancel = True si Cancel n'est pas déclarée ? Ca ne sert à rien !
_______________________________________
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 1 déc. 2004 à 09:55
Dark Sidious < JE crois que ce qu'il veut savoir, c'est que devient un parametre optionnel non spécifié lors de l'appel à une sub quand cette sub se termine.
Du genre ..
Sub F1(optional byref Cancel As Boolean)
Cancel = True
End Sub
Et un appel du genre "Call F1()" <- Possible car Cancel est "Optional" !!
Et bien en fait, dans ce cas précis, le Cancel dont tu as modifié la valeur dans le corps de F1 est perdu, et n'est plus exploitable juste après l'appel à "F1()" !!!!
C'est logique, Tu ne lui à transmis aucune variable, donc F1 ne peut pas te retourner de valeur !! Et l'idée d'une varaible non déclarée est totalement incocevable en VB !!!
C'est un peut comme si tu avait :
Sub F2(ByRef L As Long)
L = 10
End sub
Et un appel du genre "Call F2(5)"
Cet appel est correct, mais la valeur 10 affecté au parametre L (pourtant byref) est perdu après l'appel à F2, car on a transmis à la fonction une constante, et non une L-Value.
Christophe R.
Vous n’avez pas trouvé la réponse que vous recherchez ?
BozzoDodo
Messages postés185Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention10 janvier 2008 1 déc. 2004 à 18:01
En fait c'est pas exactement ce que je voulais. Parfois j'ai besoin de spécifier le paramètre optionel qui est en fait STOP. C'est à dire que je lance la procédure en faisant référence à une variable et par exemple au bout de 5s, cette valeur change. Du coup dans la SUB, il suffit de tester STOP, et de quitter si cette valeur est True. Parfois je n'est pas besoin de faire arréter la fonction, donc je ne met pas le paramètre. Euh... vous avez compris?! =D