cs_thierry la fronde
Messages postés351Date d'inscriptionmercredi 21 juillet 2004StatutMembreDernière intervention12 août 2009
-
24 déc. 2004 à 17:55
cs_thierry la fronde
Messages postés351Date d'inscriptionmercredi 21 juillet 2004StatutMembreDernière intervention12 août 2009
-
25 déc. 2004 à 14:17
Bonjour,
Je voudrais faire une procédure dans laquelle je passe un tableau d'entier en paramètre. Mais je ne veux pas que mon tableau puisse être modifé dans la procédure en question.
Mon code est celui-ci :
Private Sub MaFonction(ByVal Tableau() As Integer)
'Séquences d'instructions
' si je fais :
Tableau(0)=8888 ' ça compile est ça modifie mon tableau. Oups!
End Sub
Comment puis-je assurer cette procédure ?
Merci d'avance pour vos réflexions.
(D'habitude je programme en C++)
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 24 déc. 2004 à 18:22
Salut,
Comprend pas, normalement, si tu as mis byval, ça ne doit pas modifier ton tableau d'origine (contraiement à byref). A moins ue ton Tableau soit déclaré en public quelque part.
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 25 déc. 2004 à 09:57
salut
tu dois être en VB.net ? non? parce que en VB6 on ne peut pas passer de tableau par valeur
et de toute façon dans n'importe quel langage (sauf Pascal/Delphi) C/C++,VB,(VB.net ?) un tableau est un pointeur donc pas de passage par valeur...Il n'existe pas de moyen comme const en VB pour empêcher toute tentative de modification suaf ne pas le faire...ou faire une copie du tableau
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 25 déc. 2004 à 13:38
Bon sang mais c'est bien sûr !
Effectivement, ShareVB a raison !
Dans tous les cas de figure, le tableau d'origine est modifé. Pour l'empêcher :
Private Sub MaFonction(Tableau() As Integer)
dim tmp_Tableau() as integer
tmp_Tableau = Tableau
'Séquences d'instructions
' je fais :
tmp_Tableau(0)=8888 ' ça ne modifie pas mon Tableau. Hourra !
End Sub
Cordialement, CanisLupus
Vous n’avez pas trouvé la réponse que vous recherchez ?