Question simple sur les boucles : aller à l'élément suivant..

Résolu
Signaler
Messages postés
288
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
26 janvier 2012
-
Messages postés
14850
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
-
Bon je dois pas être bien reveillé ce matin, j'ai un trou.. je le trouve ni dans les bouquins, ni sur le net, c'est surement trop basique pour avoir besoin de le préciser mais voilà le topo :

je suis dans une boucle, et je voudrais passer à l'élément suivant sans executer la fin de la boucle, en cas d'erreur dans un 'try.. catch'

j'ai essaye de mettre un deuxième 'next' (<-quel con :)), mais c'est ça l'idée (pour ceux qui n'auraient pas compris)..
dans le vieux 'c', c'était quelque chose comme 'continue'..

allez les gars, ça doit pas vous couter grand chose,
merci

.Maytheforcebewithyou.Maxime.

16 réponses

Messages postés
14850
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
160
Bonjour

En VB 2005 Pro, aucun pb.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
mets un Goto ^^
Messages postés
288
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
26 janvier 2012
1
serieux y'a pas mieux ??

un truc tout frais tout bon de notre .net fabuleux

si jamais y'a pas mieux j'accepte plus tard cette soluce mais bonjour le bricolage, autant mettre un 'if' apres mon try catch..

.Maytheforcebewithyou.Maxime.
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
a ta guise, je sais que ma réponse initialise lancera tot ou tard une polémique...

mais une fois compilé, des JMP y'a que ca... même ton beau If en deviendra un ^^
autant éviter de perdre du temps avec ce genre de choses..

donne nun nom sympa a ton étiquette (genre GetNext, ou Skip, ...) et voilà ^^

(en même temps, je ne code que très peu en .Net, donc)
Messages postés
14850
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
160
Bonjour

Un "Exit for" ou "Continue For" ne te convient pas ?

Et concernant les GOTO en .NET, je reste sur ma position en disant que dans l'immense majorité des cas, on peut éviter de faire du code spagetti  .

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
Continue For, je savais pas que ca existais ^^

pour les Goto, on peux toujours mettre des If a gogo...
Messages postés
288
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
26 janvier 2012
1
et non.. 'continue for' n'existe pas en .net (a moins qu'il faille appeler une bibliothèque particulière..) et 'exit for' equivaut à un exit : ça sort de la boucle (moi je veux aller a l'element suivant.. :)

donc merci pour vos idées... ça me parait bizarre que cette formule magique precise n'existe pas..

pour l'instant je vis avec un 'if' des familles derrieres mon catch..
longue vie au bricolage

.Maytheforcebewithyou.Maxime.
Messages postés
14850
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
160
Bonjour

Continue fonctionne, et c'est une instruction VB.

Tape "continue" sur ton EDI, puis utilises la touche F1.

Juste pour info en quel version de .NET es-tu ?

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
288
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
26 janvier 2012
1
visualstudio 2002 et effectivement, 'continue' devrait être bon.. mais pourquoi il veut pas me le prendre mon compiler ?? pourquoi il me le souligne ???

apparamment y'aurait des conflits avec des blocs 'finally', je l'ai essayé dans un cas basique et rien y fait : il me le reconnait pas..

.Maytheforcebewithyou.Maxime.
Messages postés
14850
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
160
Bonjour

2002 connais pas, mais à partir de 2003, pas de pb.

Et hors d'un bloc Finally ?

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
288
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
26 janvier 2012
1
Bah c'est dans l'aide officielle, dans la description du 'continue' que j'ai lu que c'était pas bon dans un bloc 'finally', bon moi j'ai pas de bloc finally mais je me suis dis que peut-être c'était mon 'try catch' qui lui plaisait pas..
 j'ai donc fait un truc bidon derriere un bouton et ça lui plait toujours pas..

.Maytheforcebewithyou.Maxime.
Messages postés
14850
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
160
Bonjour

Peux-tu me montrer le code que tu utilises et le message qu'il te retourne pour te dire que c'est pas bon ?

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
288
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
26 janvier 2012
1
Avec plaisir : (voila le plan test de l'expression 'continue' avec visual studio 2002) :

 Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim a, b, c, d As Integer
        b = 0
        c = 0
        For a = 0 To 5
            b = b + 1
            d = c
            If b = 3 Then
                b = 0
                continue()
            End If
            c = c + 1
        Next
    End Sub

Et en fait j'ai pas de message d'erreur, il ne reconnait pas le 'continue', souligné et me le qualifie comme 'non déclaré' si je tente de compiler quand même..

Peut-être faut-il importer une liste de classe spécifique au début ?
Mais c'est pas précisé dans l'aide..
.Maytheforcebewithyou.Maxime.
Messages postés
14850
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
160
Bonjour

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim a, b, c, d As Integer
        b = 0
        c = 0
        For a = 0 To 5
            b = b + 1
            d = c
            If b = 3 Then
                b = 0
                continue For
            End If
            c = c + 1
        Next
    End Sub

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
un Else resoudrait tout :

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim a, b, c, d As Integer
For a = 0 To 5
b = b + 1
d = c
If b = 3 Then
b = 0
Else
c = c + 1
End If
Next
End Sub
Messages postés
288
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
26 janvier 2012
1
Oui c'est sur qu'un else resout tout :) j'ai d'ailleur depuis contourné le problème..
Mais il doit bien exister un mot-clé correspondant au continue, même dans ma version (officielle pourtant :) de vb.net..

continue for n'est pas reconnu non plus, c'est très sympa NHenry, mais il marche chez vous ? avec quelle version ?
.Maytheforcebewithyou.Maxime.