Code wird falsch abgearbeitet --> VB spinnt rumm ?

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Code wird falsch abgearbeitet --> VB spinnt rumm ?

    Hallo Forum

    Habe ein großes Problem, da mein Code irgendwie nicht richtig abgearbeitet wird.
    Habe eine If Abfrage die 4 Ereignisse überprüfen soll. Habe meine if so geschrieben.

    VB.NET-Quellcode

    1. If Cbb_Ebene_1.SelectedIndex = 0 AndAlso rbt_Menüliste_ändern.Checked = True OrElse rbt_Menüliste_löschen.Checked = True OrElse rbt_Menüliste_wählen.Checked = True Then


    im Debuggen mit Einzelschritt ist mir nun aufgefallen, das mein Code nicht richtig abgearbeitet wird. X(
    Meine if sollte eigentlich nach meinen Werten übersprungen werden, wird sie aber nicht.
    Mein Cbb_Ebene_1.SelectedIndex ist 9 also nicht = 0 und rbt_Menüliste_ändern.Checked ist zu Zeit des ausführens False, soll aber true sein, rbt_Menüliste_löschen.Checked ist zu Zeit des ausführens False soll aber auch true sein und zuletzt rbt_Menüliste_wählen.Checked = True ist auch True.
    Warum wird diese if als True erkannt. ?(
    Vielleicht hat ja jemand eine Antwort


    mfg Wipss
    Hallo Artentus

    erstmal danke für deine schnelle Antwort.
    :P
    Aber eigentlich wollte ich nach meiner Abfrage es so haben
    Grundbedingung ist Cbb_Ebene_1.SelectedIndex = 0 die sollte jetzt mit "eine" der folgenden Bedingungen übereinstimmen.
    Wie bekomme ich das denn hin, das wenn die erste Bedingung schon falsch ist, die If übersprungen wird.
    Die erste Bedingung ist ja schon falsch. Wie kann denn falsch + falsch + falsch + wahr = wahr sein
    :?:
    Vielleicht kannst mir das mal erklären.



    Hallo ThePlexian
    danke für deinen Tipp mit den Klammer. so funzt es auch. :thumbsup:
    Eine andere Frage hätte ich nochmal an euch. Habe teilweise codesprünge die eigentlich nicht sein sollten. nach entfernen der Combo.
    und neu einfügen des Code sind diese Sprünge auch wieder weg, warum weis ich immer noch nicht.
    Beispiel:
    .........

    Cbb_Ebene_1.Enabled = True
    Eingabefeld.Enabled = False ---> hier springt der code raus ? warum er das macht keine Ahnung ?(

    Eingabefeld.Clear()
    .........
    vielleicht kann mir das einer von euch erklären warum das passiert.mfg Wipss


    Edit by hal2000:
    - Die Farbe ROT ist der Moderation vorbehalten.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „hal2000“ ()

    Die Operatoren werden von links nach rechts abgearbeitet. Das bedeutet, zuerst wird Cbb_Ebene_1.SelectedIndex = 0 AndAlso rbt_Menüliste_ändern.Checked = True ausgewertet. Das Ergebnis dieser Auswertung wird dann als linke Eingabe für das erste OrElse verwendet usw.
    Also:

    Quellcode

    1. AndAlso: falsch und falsch = falsch
    2. 1. OrElse: falsch oder falsch = falsch
    3. 2. OrElse: Falsch oder wahr = wahr


    Wenn du eine andere Reihenfolge haben willst, dann musst du entsprechend Klammern setzen.
    Hallo Artentus


    Nochmals danke für deine ausführliche Erklärung.
    Dein Kollege ThePlexian war einen kleinen tick schneller mit den Klammer. Aber egal ALLES WIRD GUT. :?:
    Nochmals danke an allen Beteiligten aus dem Forum. :thumbsup:
    Vielleicht hat ja noch jemand einen Tipp mit meinen Code Sprung. Ansonsten ist das Thema hiermit als erledigt und beendet erklärt. 8o


    mfg Wipss
    For the win :D

    Also Or und OrElse bzw And und AndAlso sind die gleichen logischen Operatoren (Google mal).
    Der Unterschied ist, dass And / Or Vb6 sind., und die langeren Varianten den Vorteil haben, die Bedingung vorzeitig abzubrechen, wenn das Ergebnis bereits eindeutig ist.

    Edit: Guck auch mal unter minecraft-de.gamepedia.com/Redstone-Schaltkreise :D Unter dem Punkt Logikgatter findest du vielleicht was hilfreiches ;)
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais

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