cs_dayvid
Messages postés212Date d'inscriptionmardi 18 janvier 2011StatutMembreDernière intervention12 février 2013
-
8 janv. 2013 à 10:17
Utilisateur anonyme -
8 janv. 2013 à 20:00
Bonjour,
Comment passer un tableau à dimension multiple (2 dimension dans mon exemple) à une procédure (Function ou Sub)
Exemple:
Module Module1
Function RemplirMonTableau(ByRef MonTableau() As String) As String
For I = 1 To 100
For J = 1 To 100
MonTableau(I, J) = "0"
Next
Next
End Function
Sub Main()
Dim MonTableau(100, 100) As String
RemplirMonTableau(MonTableau())
End Sub
End Module
Ceci est juste un exemple, voici le code en question:
Sub Print(ByRef Tableau() As String, ByVal Chaine As String, Optional ByVal CouleurChaine As Integer 7, Optional ByVal CouleurFontChaine As Integer 0, Optional ByVal PositionX As Integer = -1, Optional ByVal PositionY As Integer = -1, Optional ByVal Alinea As Integer = 0)
Dim Caractère As String = ""
Dim CurseurX As Integer = Console.CursorLeft
Dim CurseurY As Integer = Console.CursorTop
If PositionX > -1 And PositionX <= Console.LargestWindowWidth Then
Console.CursorLeft = PositionX
CurseurX = PositionX
End If
If PositionY > -1 And PositionX <= Console.LargestWindowHeight Then
Console.CursorTop = PositionY
CurseurY = PositionY
End If
For Lecture As Integer = 0 To Chaine.Length - 1
Caractère = Chaine.Substring(Lecture, 1)
Tableau(CurseurX + Lecture, CurseurY) = Caractère ' ICI SA COINCE !!!
Next
Console.ForegroundColor = CType(CouleurChaine, ConsoleColor)
Console.BackgroundColor = CType(CouleurFontChaine, ConsoleColor)
If Alinea = 1 Then
Console.WriteLine(Chaine)
Else
Console.Write(Chaine)
End If
End Sub
Je souhaite remplir une partie du tableau avec se que l'utilisateur veux écrire
Mais je ne sais pas comment passer un tableau a dimension multiple
à une fonction ou sub pour ensuite le remplir ou autre.
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 8 janv. 2013 à 12:41
Bonjour,
Pour passer un tableau multi-dimensionnel, il faut préciser son type :
String(,) '2dim
String(,,) '3dim
...
v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
Mon site
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 8 janv. 2013 à 12:56
Private Sub ModifyArray(ByVal table(,,) As String)
End Sub
aussi si tu utilises ton tableau dans plusieurs
fonction et sub il vaudrait mieux de déclarer
ton tableau comme membre privé de ton module
sans le passer comme parametre à tes sub
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 8 janv. 2013 à 10:29
Bonjour,
en le passant à une fonction sans les parenthèses et sans son type (donc en variant)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 8 janv. 2013 à 10:38
L'appel et le passage peuvent également se faire en spécifiant le type et en utilisant les parenthèses (des deux côtés, donc).
Mais ton problème n'est manifestement pas là (celui du passage de paramètres), mais bien en amont et n'a rien à voir avec ce passage de paramètres.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 8 janv. 2013 à 11:01
Ca y est ? Si oui ; corrige. Si non : demande-toi la signification de
RemplirMonTableau(MonTableau())
alors que RemplirMonTableau est une fonction
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 8 janv. 2013 à 11:56
Salut
pour scaner un tableau multi dimensional de string
Dim table(70, 7, 14) As string
For i = 0 To table.GetUpperBound(0)
For j = 0 To table.GetUpperBound(1)
For k = 0 To table.GetUpperBound(2)
table(i, j, k) = "bonjour"
Next
Next
Next
cs_dayvid
Messages postés212Date d'inscriptionmardi 18 janvier 2011StatutMembreDernière intervention12 février 20131 8 janv. 2013 à 12:26
Merci bien ucfoutu mais je n'est pas compris, désoler
Merci à toi également ShayW, mais je voudrait passer mon tableau
à une fonction ou Sub pour pouvoir l'utiliser et le modifier !
cs_dayvid
Messages postés212Date d'inscriptionmardi 18 janvier 2011StatutMembreDernière intervention12 février 20131 8 janv. 2013 à 13:10
aussi si tu utilises ton tableau dans plusieurs
fonction et sub il vaudrait mieux de déclarer
ton tableau comme membre privé de ton module
sans le passer comme parametre à tes sub
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 8 janv. 2013 à 13:10
Je t'ai pourtant presque tout dit, dayvid !
Si tu te sers d'une fonction et mets entre parenthèses, comme ici :
RemplirMonTableau(MonTableau())
cela plantera puisque les parenthèses en rouge signifient : retour d'une valeur
Hors, tu ne veux aucune valeur, mais modifier ton tableau ! Et dans ce cas :
- ce n'est plus une fonction, qu'il te faut, mais une simple procédure (sub)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 8 janv. 2013 à 14:00
Bonjour,
UcFoutu, en .NET, il y a forcément les parenthèses, donc pas de problème à ce niveau.
v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
Mon site
En VB.net les paramètres sont passés par valeur (ByVal) sauf s'il est passé par référence (ByRef). Quand il est passé par valeur, les résultats calculés dans une sub() n'ont aucune action sur les données de la procédure appelante. Quand ils sont passés par référence (ByRef) la variable modifée dans la sub appelée est aussi modifiée dans la sub appelante. Cherche ByRef dans l'aide. Chercher dans l'aide, cela ne fait pas mourrir.