Tableau en paramètre d'une fonction/procédure

cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009 - 24 déc. 2004 à 17:55
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 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++)

thierry la fronde

5 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
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.

Cordialement, CanisLupus
0
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
24 déc. 2004 à 18:26
Il est déclaré en variable locale dans le main

thierry la fronde
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
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

ShareVB
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
25 déc. 2004 à 14:17
Merci pour votre aide

A+
0
Rejoignez-nous