[GELÖST] For each: Weiter zum nächsten Element

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Mangafreak1995.

    [GELÖST] For each: Weiter zum nächsten Element

    Hallo,

    Ich habe eine For-Each-Schleife, und darin eine If-Abfrage.
    Wenn die If-Abfrage wahr ist, soll zum nächsten Element gegangen werden, also eigentlich wie 'next' am Schluss.

    Wie macht man dies in Visual Basic?

    Gruss sandiro

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „sandiro“ ()

    Mach doch einfach:


    VB.NET-Quellcode

    1. For Each Bla As Bla In Bla
    2. If Bla = Bla Then
    3. 'Hier geht er ja denn zum nächsten Element
    4. Else
    5. Exit For
    6. Next
    meinst du soetwas ?

    VB.NET-Quellcode

    1. Private Sub ErsteSub()
    2. For Each Eitnrag As String In ListBox1.Items
    3. If Not Eitnrag.Contains("Test") Then
    4. Exit For
    5. End If
    6. Next
    7. End Sub

    also einfach abfragen ob die bedingung nicht erfüllt ist und dann die schleife verlassen
    Hallo,

    Also ich will nicht die komplette For-Schleife beenden, sondern einfach zum nächsten Element gehen

    also im Beispiel lade ich Dateien in eine ListView, und wenn eine If-Abfrage erfüllt ist, soll die Schleife zum nächsten Element (also zur nächsten Datei) gehen.

    Gruss sandiro
    Also bei mir wird mit 'Exit for' die komplette Schleife beendet, und es kommt nicht das nächste Element...

    Ich habe mehrere If-Abfragen nacheinander, und wenn die erste False ist, kommt die zweite, ist diese auch False kommt die Dritte, ist eine jedoch True, soll einfach das nächste Element ausgewählt werden,

    aber wie gesagt, mit "Exit for" kommt nicht das nächste Element, sondern die Schleife wird beendet.

    Gruss sandiro
    Also, hier mal der Code (der Code ist noch in einer If-Abfrage drin)

    VB.NET-Quellcode

    1. For Each i In IO.Directory.GetFiles(Ordner)
    2. 'Eigenschaften wie Typ aus der XML-Datei auslesen
    3. If lbTyp.Text <> Nothing Then
    4. If Typ <> lbTyp.Text Then 'Typ ist eine String-Variable die in der Schleife erzeugt wird
    5. '<HIER SOLL DAS NAECHSTE ELEMENT AUSGEWAEHLT WERDEN>
    6. End If
    7. End If
    8. 'Eintrag hinzufügen
    9. Next
    10. End If


    Gruss sandiro

    Edit:
    Ich habe das Problem jetzt mit einer Sprunkmarke gelöst;
    Vor 'Next' habe ich einfach 'Ende:' geschrieben, und bei der If-Abfrage einfach 'GoTo Ende'

    Danke und Gruss
    sandiro

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „sandiro“ ()

    sandiro schrieb:

    For Each i In IO.Directory.GetFiles(Ordner)

    also deine Reihenfolge stimmt schon

    VB.NET-Quellcode

    1. Private Sub ErsteSub()
    2. If Me.BackColor = Color.Beige Then
    3. For Each Eitnrag As String In ListBox1.Items
    4. If Not Eitnrag.Contains("Test") Then
    5. If Eitnrag.StartsWith("keine Angaben") Then
    6. ' jetzz mach das was ich will
    7. End If
    8. End If
    9. Next
    10. End If
    11. End Sub


    was macht er denn nicht ?
    eigentlich scheinen dann nur die Abfragen nicht korrekt zu sein.
    lass dir mal ziwchen den ganzen If eine MessageBox aufpopen, damit du weis ob er überhaut dort hinkommt.
    Also ich hab mal am Anfang der ForEach-Schleife einen Haltepunkt gesetzt und dann Schritt für Schritt (F10) ausgeführt, und er kommt auch zu "Exit sub", aber dann springt er gleich zu "End if" (also die Ganze ForEach-Schleife ist nochmals in einer If-Abfrage) und beendet dann die Sub.

    Aber wenn ich anstatt Exit sub "Goto Ende" schreibe, und eine Zeile vor "Next", "Ende:" schreibe, funktioniert es.

    Gruss sandiro
    was ist das Problem an GoTo ?

    ich würde das so lösen
    deins:

    VB.NET-Quellcode

    1. For Each-Schleife
    2. If-Abfrage für das Item die bei wahr ist das Item überspringt
    3. Next

    meins:

    VB.NET-Quellcode

    1. For Each-Schleife
    2. If-Abfrage für das Item die bei falsch das Item bearbeitet
    3. Next

    denn wenn es nicht bearbeitet werden soll wird es übersprungen
    @Mangafreak1995;
    Wäre eine Lösung,
    ich habe mehrere If-Abfragen und habe dies wegen der "Übersichtlichkeit" nicht so gemacht, aber da GoTo anscheinend sch... ist, mach ich's vielleicht doch nach deiner Lösung

    @picoflop;
    Was ist das Problem bei der Verwendung von "GoTo"?
    Wenn ich Continue For verwende, ist dies ja Schlussendlich das Gleiche wie bei Mangafreak1995,
    dann kann ich ebenso gut diese verwenden, da zu ja noch einfacher ist...

    Danke und Gruss
    sandiro
    naja so lange das Problem gelöst wurde ist doch gut
    lass es doch unschön sein oder 'Leichenschändung' es funktioniert :thumbsup: