Variable in einer Func speichern und diese ändern

  • HI,
    ich muss in meinem Programm abändern. Ich kann leider dies nur so lösen aber es klappt nicht.

    Hier ein Beispiel

    [autoit]

    test()

    [/autoit][autoit][/autoit][autoit]

    func test()
    $zz = 0

    [/autoit][autoit][/autoit][autoit]

    if $zz = 0 then

    [/autoit][autoit][/autoit][autoit]

    Msgbox("","","")

    [/autoit][autoit][/autoit][autoit]

    $zz = $zz +1

    [/autoit][autoit][/autoit][autoit]

    Else

    [/autoit][autoit][/autoit][autoit]

    Msgbox("","anders","anders")

    [/autoit][autoit][/autoit][autoit]

    $zz = 0

    [/autoit][autoit][/autoit][autoit]

    Endif

    [/autoit][autoit][/autoit][autoit]

    Endfunc

    [/autoit]

    Das Problem ist ich habe alles in Func gelöst und die schleifen fangen immer wieder an.
    Wenn ich ja nun wieder die Func test aufrufe wird ja leider $zz immer wieder 0 gesetzt, ich möchte jedoch einen wechsel.
    D.h. wenn eben 0 war, dann soll danach $zz +1 gemacht werden und beim nächsten durchlauf das Else $zz wieder auf 0 setzen, sodass diese beiden Sachen immer hin und her springen können


    Ich habe es schon mit global versucht, aber ich habe es damit auch nicht geschafft, habt ihr vielleicht eine Idee wie ich dies lösen könnte ??

    Mfg

    Einmal editiert, zuletzt von emtec22 (7. November 2008 um 15:37)

  • Spoiler anzeigen
    [autoit]

    Global $zz = 0

    [/autoit] [autoit][/autoit] [autoit]

    While True
    test()
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func test()
    If $zz = 0 Then
    MsgBox("", "", "")
    $zz += 1
    Else
    MsgBox("", "anders", "anders")
    $zz = 0
    EndIf
    EndFunc ;==>test

    [/autoit]

    Aber etwas ohne Sinn ;D

    • Offizieller Beitrag

    Um einen Wert zu switchen, bietet sich BitXOr() an:

    [autoit]

    Local $val = 0

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite(_switch($val) & @CRLF)
    ConsoleWrite(_switch($val) & @CRLF)
    ConsoleWrite(_switch($val) & @CRLF)

    [/autoit][autoit][/autoit][autoit]

    Func _switch(ByRef $VAR)
    $VAR = BitXOR($VAR, 1)
    Return $VAR
    EndFunc

    [/autoit]
  • danke blubbstar


    klappt super ich weiss zwar nicht warum deins nun geht aber egal so klappt das genauso wie ich es wollte