Salut tout le monde
S'il vous plait quelqu'un peut-il me dire comment déclarer une fonction pour qu'elle retourne un tableau?
merci
Salut tout le monde
S'il vous plait quelqu'un peut-il me dire comment déclarer une fonction pour qu'elle retourne un tableau?
merci
tiens un petit bout de code qui devrait t'aider. Je ne sais pas si c'est la meilleur solution mais ça marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Public Sub recupereTableau() Dim tableauControl(,) As Object = New String(,) {} tableauControl = retourneTableau() End Sub Public Function retourneTableau() Dim tableauARetourner(1, 1) tableauARetourner(0, 0) = "ligne 0 colonne 0" tableauARetourner(0, 1) = "ligne 0 colonne 1" tableauARetourner(1, 0) = "ligne 1 colonne 0" tableauARetourner(1, 1) = "ligne 1 colonne 1" Return (tableauARetourner) End Function
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Par retourner un tableau, j'entend fournir un tableau comme résultat. j'ai essayé un truc mais j'ai cet avertissement en retour:
Voilà la déclaration de ma fonction:Avertissement 1: La fonction 'ReconnaissanceMur' ne retourne pas une valeur pour tous les chemins de code. Une exception de référence null peut se produire au moment de l'exécution lorsque le résultat est utilisé.
De plus quand je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Public Function ReconnaissanceMur(ByVal i As Integer, ByVal j As Integer, ByVal tablo As modAnt, ByVal obs(,) As Integer) As Integer()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Dim mat(9) As Integer mat = ReconnaissanceMur(i, j, posAnt(w), obstacl) For nb = 1 To UBound(mat) Next j
j'ai l'erreur :
ce qui me surprend, vu qu'à ma connaissance lorsqu'on déclare un tableau de integer, il est initialisé à zéro et non à Nothingl'exception ArgumentNullException n'a pas été gérée
Ah, tout simplement... j'avais mal interprété le sens de la phrase
Ca veut dire que le code de ta fonction ne gère pas tous les cas, et il est possible que dans certains cas elle ne renvoie pas de valeur. Fais voir le code de cette fonctionAvertissement 1: La fonction 'ReconnaissanceMur' ne retourne pas une valeur pour tous les chemins de code. Une exception de référence null peut se produire au moment de l'exécution lorsque le résultat est utilisé.
En VB6 c'était le cas. En VB.NET il faut l'initialiser explicitement avec New
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Cette fonction permet de déterminer les obstacles rencontrés par un segment de droite entre deux points .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 Public Function ReconnaissanceMur(ByVal i As Integer, ByVal j As Integer, ByVal tablo As modAnt, ByVal obs(,) As Integer) As Integer() 'Fonction permettant de déterminer les obstacles rencontrés par un rayon émetteur-récepteur.Ce résultat est transmis par le vecteur matr Dim abs, ord, ptitAbs, grdAbs, ptitOrd, grdOrd, u, v As Integer Dim a, b As Double Dim matr(9) As Integer abs = CInt(Round(tablo.x / K)) : ord = CInt(Round(tablo.y / K)) If i <= abs Then ptitAbs = i grdAbs = abs Else ptitAbs = abs grdAbs = ord End If If j <= ord Then ptitOrd = j grdOrd = ord Else ptitOrd = ord grdOrd = j End If If (ptitAbs = grdAbs) And (ptitOrd = grdOrd) Then Return matr Else If ptitAbs = grdAbs Then For v = ptitOrd To grdOrd matr(obstacl(grdAbs, v)) += 1 Return matr Next Else If ptitOrd = grdOrd Then For v = ptitAbs To grdOrd matr(obstacl(u, grdOrd)) += 1 Return matr Next Else a = (grdOrd - ptitOrd) / (grdAbs - ptitAbs) b = (ptitOrd * grdAbs - grdOrd * ptitAbs) / (grdAbs - ptitAbs) For u = ptitAbs To grdAbs For v = ptitOrd To grdOrd If v = a * u + b Then matr(obstacl(u, v)) += 1 Return matr End If Next Next End If End If End If End Function
Pour ce qui est de l'initialisation avec new, j' ai fais un débogage avec point d'arrêt situé juste avant l'appel de la fonction reconnaissanceMur, là je n'ai aucune erreur
Ah oui, si tu spécifies la taille ça crée bien le tableau...
Par contre dans certains cas tu ne renvoies pas matr, le résultat de la fonction est donc indéfini. Ajoute juste un Return matr à la fin de la fonction, ça devrait régler le problème
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Attention à ce moment tu retourne matr dès le premier tour de boucle, je pense que le code devrait plutôt ressembler à ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 For v = ptitOrd To grdOrd matr(obstacl(grdAbs, v)) += 1 Return matr Next
Cela t'arrive plusieurs fois dans ta fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 For v = ptitOrd To grdOrd matr(obstacl(grdAbs, v)) += 1 Next Return matr
Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
À quelle heure dormez-vous ?
Censément, quelqu'un de sensé est censé s'exprimer sensément.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Ah oui, en effet l'ajout de
en fin de de fonction résout le problème, je n'ai plus aucun message d'avertissement.return matr
Merci de votre aide
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager