If NOT über variable

  • hey,
    ich würde gerne den befehl "NOT" über eine variable in eine function einbauen. z.b.

    $varNOT= "not"
    If $varNOT $test = 5 Then

    leider funtioniert es nicht, so wie ich es jetzt gebaut habe:/ kennt jemand eine andere lösung ?

    mfg

  • ?(

    $varNOT= "not" > ok? sicherlich zum Suchen des Wortes "not" in einem Array?
    Wenn "not" $test = 5 Dann > ich stimme Oscar zu, macht so echt garkeinen Sinn... :/

    Solltest du negieren wollen, wäre die Syntax eine andere, erzähl doch mal was die zwei Zeilen Code machen sollen, wenns fertig ist... :S

  • @Oscar ich vermute er will eine "variable Negation" einbauen, wo er den Schalter (ob negiert werden soll) zur Laufzeit legen kann.
    Dafür wäre jetzt eine ganz schnelle Lösung (verzeiht, es ist 8 Uhr in der Früh und ich habe schlecht geschlafen):

    AutoIt
    Func _toNegateOrNot($expression, $type = 0)
     Return type = 0 ? $expression : Not($expression)
    EndFunc

    Obvious, aber trotzdem nochmal gesagt:
    Wenn type = 0 ist, dann wird nicht negiert, wenn type = 1 (und wenn type != 0) dann wird negiert.

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

    Einmal editiert, zuletzt von Xorianator (9. August 2016 um 15:34) aus folgendem Grund: Update Code (siehe BugFix Hinweis)

  • hey,
    bei dem code:
    $varNOT= "not"
    If $varNOT $test = 5 Then

    gibt es 2 ausgänge:
    1.
    $varNOT= ""
    If $varNOT $test = 5 Then

    dann soll der befehl : If $test = 5 Then heißen

    2.
    $varNOT= "Not"
    If $varNOT $test = 5 Then

    hier soll der bfehl : If Not $test = 5 Then heißen

    @Xorianator
    ich verstehe dein code leider nicht ^^ kannst du mir ein schnelles beispiel schreiben, indem du "If $test = 5 Then" benutzt ? würde es bei dir "If _toNegateOrNot $test = 5 Then" heißen ?

  • Das würde ich eigentlich genau entgegengesetzt ausführen, ist schlüssiger: '0'-kein NOT vorhanden, '1'-NOT vorhanden.

    es ist 8 Uhr in der Früh und ich habe schlecht geschlafen

    Ich war noch nicht ganz auf der Höhe. Ergibt natürlich Sinn, wenn man sich das mal kurz als Gatter überlegt und die Negation haben will, wenn Strom anliegt.

    @Lanealine du musst den Ausdruck, den du testen willst, in die Funktion packen.

    Anhang: Ich kann den Code derzeit leider nicht testen, müsste aber so funktionieren.

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

    Einmal editiert, zuletzt von Xorianator (9. August 2016 um 15:33) aus folgendem Grund: Quellcode angefügt

  • @AspirinJunkie *facepalm* danke dir! Ich kam den ganzen Tag nicht auf XOR, habe im Kopf schon an einen Term via Und & Negation gedacht, wurde mir aber alles zu bunt :D
    Manchmal sieht man den Wald vor lauter Bäumen nicht. Ist natürlich die Triviallösung.

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • sry, aber ich checks nicht^^

    könnt ihr mir das bitte nochmal an diesem beispiel zeigen ?

    Code
    $ifORifnot = "not"
    If $ifORifnot GUICtrlRead($TestCheckBox) = $GUI_CHECKED Then


    in diesem fall soll abgefragt werden ob die checkbox NICHT gecheckt ist.(weil $ifORifnot = "not")
    sollte $ifORifnot= "" sein, dann soll abgefragt werden OB die checkbox gecheckt ist.

    mfg

  • @Lanealine grundsätzlicher Denkfehler ;)
    Du kannst das "Not" nicht dynamisch als Variable setzen. Das "BitXor" übernimmt das für dich. Stell dir einfach vor, in dem BitXor() übergibst du 2 Parameter:
    1. notGesetzt = not?
    2. Die eigentliche Abfrage.
    Also wie eine Art erweitertes If.
    Anbei die Logiktabelle zu XOR:
    a, b, c = a XOR b
    0, 0, 0
    0, 1, 1
    1, 0, 1
    0, 0, 0
    Wobei c = Das Ergebnis von XOR ist.

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • @Xorianator
    danke erstmal für die erklärung.. ich muss allerdings sagen, dass ich erlich gesagt immer noch nicht raffe, wie ich da jetzt das NOT bzw normal jetzt bei meinem befehl einbauen kann.
    ich habe mehrere von solchen abfragen hintereinander, und ich möchte vorher in einer übersichtlichen tabelle mit 0 und 1 sagen, ob die kommenden if abfragen mit NOT oder normal ausgeführt werden sollen.

    @Lottich
    hey, danke für den hinweis, ich glaube aber dass mir das nicht weiterhilft bei meinem problem. (bin allerdings anfänger und übersehe vielleicht, wie man es mit dem befehl richtig anstellt^^)

  • ich habe mehrere von solchen abfragen hintereinander, und ich möchte vorher in einer übersichtlichen tabelle mit 0 und 1 sagen, ob die kommenden if abfragen mit NOT oder normal ausgeführt werden sollen.

    Dann ist "Switch - Case" doch prima für dich geeignet.


    Allerdings ist mir noch immer nicht klar, warum man das so machen sollte. (ist aber auch schon spät :) )
    Ich wette zwar nie um Geld, aber ich bin mir fast sicher, dass ich mein Sparschwein auffüllen könnte, wenn ich sage:
    "Was du vor hast kann garantiert auf andere Weise besser gelöst werden."

    Was hast du denn bisher zusammen gebastelt? Wenn man deinen Code als Grundlage nehmen kann, dann kann dir auch viel besser geholfen werden,
    denn dann wird meistens ersichtlich, was du eigentlich genau vor und nur evtl umständlich beschrieben hast. Und darum geht es auch, wenn wir hier nach Beispielscripten fragen. Keiner will hier irgend eine Idee klauen...

  • so sieht das ganze ungefähr aus, damit ich nicht unten im script NOT oder "" adden zu müssen, möchte ich gerne direkt am anfang vom script variablen haben, in die ich dann "" oder "not" eintrage, damit das dann unten übernommen wird.
    das mit dem switch check ich leider noch nicht so richtig, so wie das bis jetzt für mich aussieht, kann ich das für meine situation nicht benutzen. aber vielleicht verstehe ich was falsch an dem befehl^^

  • So?

  • Mir graut es gerade schon sehr stark, dass hier das XOR dem doppelten if weicht.
    Aber gut, euer Bier.

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Das ist doch mal wieder das typische X-Y-Problem!
    Hier wird an Y herumgedoktert ohne das X zu kennen.
    So nebenbei ist auch die Abfrage der Checkboxen falsch.
    Aber macht ruhig so weiter...

    Danke, dass du das Kind beim Namen nennst.
    Die ursprüngliche Teil-Lösung hatte AspirinJunkie ja schon gegeben. Aber offensichtlich wird sie einfach ignoriert.

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • @Xorianator
    ich würde es ja gerne mit dem BITXor machen, aber ich verstehe leider nicht, wie das funktioniert :(
    ich bin mir sicher, dass das mit dem BITXor leichter ist und übersichtlicher..


    mein beispiel ist ein "beispiel", aber ich denke schon das es genau zeigt, welches problem ich habe.
    so kompliziert ist das problem meiner meinung nach nicht, eine variable in eine if abfrage zu packen. aber ich bin halt selber kein autoit pro.
    kannst du mir bitte ein kurzes beispiel geben an den ersten beiden if abfragen, wie ich das mit dem BITXor einbauen muss, damit es eine normale IF abfrage ist oder einer IF NOT ?