"Oder" - Abfrage wird als "Und" gewertet?

  • Heute hab ich´s auch. Bei mir wird die Abfrage in Zeile 18 als "and" gewertet. Es müsste ja nur eins der beiden geprüft werden beim "or"....


    Kann das jemand nachvollziehen?

  • Ersetze das OR durch ein AND, dann hast Du (wahrscheinlich) das Ergebnis, das Du willst.

    Du prüfst jetzt, ob eines der Felder leer ist. Wenn das der Fall ist, dann gibt er leer aus (macht also alles richtig)

  • Oh :( dann hab nur ich das Problem. So ist´s bei mir:

    Fall 1 beides Leer --> so brauche ich das auch

    Fall 2 Nur eine der Inputboxen ist gefüllt TROTZDEM LEER: :( das ist mein Problem

    Fall 3 Beide sind befüllt geht... ist ja auch logisch:

  • Deine Abfrage macht genau was du ihr gesagt hast:

    Wenn Input1 leer ist ODER Input2 leer ist, dann sag mir bitte, dass es leer ist.

    "Fall 2 Nur eine der Inputboxen ist gefüllt TROTZDEM LEER: das ist mein Problem"

    Dann darfst du kein "OR" verwenden, sondern brauchst "AND".

    Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Ich falle in die Friteuse.

  • bei mir ist das auch so wie es BananaJoe schreibt!
    was willst du denn erreichen? vielleicht hast du einen denkfehler.
    was soll für eine meldung kommen, wenn nur ein feld gefüllt ist? soll dann kommen, bitte alle felder ausfüllen oder so?
    prinzipiell kannst du ja 3 zustände haben.

    1. alle felder leer
    2. eines der beiden felder leer
    3. alle felder gefüllt

    und diese zustände musst du alle prüfen.

    gruß gmmg

    Einmal editiert, zuletzt von gmmg (29. Mai 2015 um 12:34)

  • Also Ziel soll es sein, wenn EINE der beiden Checkbox leer ist, das trotzdem der Inhalt ausgegeben wird:

    also "Inhalt: asdf - "
    oder "Inhalt: -asdf"

    EDIT: hat sich wirklich mit dem "AND" erledigt. Oh man ...

  • dann sollte das so passen! :)

    da kannst du theoretisch aber auch nur die MSGBox machen ohne if.
    MsgBox(0,"","Inhalt: " & GUICtrlRead($input1) & " - " & GUICtrlRead($input2))

    liest dann beide Felder aus und gibt dir den Inhalt zurück.

    gruß gmmg

  • Ähm ja ist doch alles richtig. Was willst du erreichen? Deine Abfrage prüft ob eines der beiden Felder leer ist (OR = mindestens eine der Bedingungen muss erfüllt sein). Ist eines der beiden (oder beide) leer, dann erscheint der Hinweis "leer". Wenn du stattdessen nur den Hinweis "leer" bekommen möchtest wenn beide Felder leer sind, dann musst du AND verwenden (AND = beide Bedingungen müssen erfüllt sein).

    Wenn du das genauer differenzieren möchtest, also alle 3 bzw. 4 Fälle abdecken möchtest brauchst du ein anderes Konstrukt deiner Bedingung.

    Denkbar wäre z.B. folgende Lösung:

    [autoit]

    Case $testbtn
    If GUICtrlRead($input1) <> "" and GUICtrlRead($input2) <> "" Then
    MsgBox(0,"","Inhalt: " & GUICtrlRead($input1) & " - " & GUICtrlRead($input2))
    else
    If GUICtrlRead($input1) = "" AND GUICtrlRead($input2) = "" Then
    MsgBox(0,"","beide leer")
    Else
    If GUICtrlRead($input1) = "" Then MsgBox(0,"","Inhalt: " & GUICtrlRead($input1) & " - Feld 2 ist leer!")
    If GUICtrlRead($input2) = "" Then MsgBox(0,"","Inhalt: " & GUICtrlRead($input2) & " - Feld 1 ist leer!")
    endif
    EndIf

    [/autoit]

    EDIT: Sry hatte das Posting vorm Essen angefangen und erst später abgeschickt...

    3 Mal editiert, zuletzt von misterspeed (29. Mai 2015 um 13:10)

  • Alternativ kannst du auch den bedingten Operator verwenden:


    Führt zu den Ausgaben:

    Leer - Leer
    GUICTRLRead($input1) - Leer
    Leer - GUICTRLRead($input2)

    Kürzt den Quellcode ungemein, aber wird auch ein wenig unübersichtlicher.

    Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Ich falle in die Friteuse.