Counter zählt nicht runter

  • Guten Morgen,

    kann mir bitte mal einer sagen, warum meine Funktion nicht runterzählt ?

    [autoit]

    Func _KCLCountDown(); Countdown der Onlinezeit
    Local $var_onlinezeitcounter
    ConsoleWrite("1. Abschnitt: Onlinezeit: " & $var_onlinezeit & " - Onlinecounter: " & $var_onlinezeitcounter & @CRLF)
    If $var_onlinezeitcounter = "" Then $var_onlinezeitcounter = $var_onlinezeit
    ConsoleWrite("2. Abschnitt: Onlinezeit: " & $var_onlinezeit & " - Onlinecounter: " & $var_onlinezeitcounter & @CRLF)
    $var_onlinezeitcounter = $var_onlinezeitcounter - 1; Counter zählt 1 Rückwärts
    ConsoleWrite("3. Abschnitt: Onlinezeit: " & $var_onlinezeit & " - Onlinecounter: " & $var_onlinezeitcounter & @CRLF)
    GUICtrlSetData($GUI_Group_Info_Text, "Hallo " & $var_Benutzername & ", heute ist " & $var_Wochentag & ", es ist jetzt " & $var_AktuelleZeit & " Uhr, und Du kannst heute noch " & $var_onlinezeitcounter & " Minuten am Computer verbringen."); Beschreibungstext
    GUISetState(); GUI wird aktualisiert
    If $var_onlinezeitcounter = -1 Then
    $var_onlinezeitcounter = 00
    GUICtrlSetData($GUI_Group_Info_Text, "Hallo " & $var_Benutzername & ", heute ist " & $var_Wochentag & " und es ist jetzt " & $var_AktuelleZeit & " Uhr, Du liegst als außerhalb Deiner Computerzeiten"); Beschreibungstext
    GUICtrlSetBkColor($GUI_Group_Info_Text, 0x7FF0000); Hintergrundfarbe rot, d.h. außerhalb der Onlinezeiten
    GUISetState(); GUI wird aktualisiert
    EndIf
    EndFunc ;==>_KCLCountDown

    [/autoit]

    Die Globale Variable $var_onlinezeit wird in einer anderen Funktion befühlt, wir gehen hier mal vom Wert 30 Minuten aus. Nach einer Minute ist dann der Wert der Variablen $var_onlinezeitcounter auf 29, was OK ist.
    Ab dem 2. Durchlauf bleibt der Wert aber auf 29, obwohl ich doch in Zeile 6

    [autoit]

    $var_onlinezeitcounter = $var_onlinezeitcounter - 1; Counter zählt 1 Rückwärts

    [/autoit]

    stehen habe. Es sieht für mich aus, als ob Autoit hier den Wert der Variablen $var_onlinezeitcounter löscht.

    Was mache ich hier falsch ?

    Gruss Hassan

    P.S. Die Funktion wird mit AdlibRegister jede Minute aufgerufen

    3 Mal editiert, zuletzt von HassanMullah (10. Juli 2012 um 07:46) aus folgendem Grund: Ich muss aus der Localen Variable eine Globale machen, dann geht es

  • Du definierts die Variable $var_onlinezeitcounter in der Funktion LOCAL neu, damit ist sie immer LEER und startet immer wieder mit dem Wert der Variablen $var_onlinezeit.

    Ich würde, wenn der Counter GLOBAL sein soll, die Zeile 2 mal löschen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hallo Micha_he,

    das hatte ich ja selbst schon in die Lösung geschrieben (allerding weiss ich nicht, wo dieser optionale Text bei "gelöst" zu sehen ist.

    Ich habe aber immer noch ein kleines Problem

    Warum ist

    [autoit]

    If $var_onlinezeitcounter = ""

    [/autoit]

    gleich wie

    [autoit]

    If $var_onlinezeitcounter <= 0 Then

    [/autoit]

    Im oberen If soll eigentlich abgefragt werden, ob die Variable leer (null) ist, wenn ja, dann wird ein Startwert (30) übergeben
    Im unteren If soll abgefragt werden, ob der Wert kleiner oder gleich 0 ist. Wenn ja dann soll es den Wert auch behalten.

    Aber wenn die Abfrage mit if 0 erreicht ist, wird die 0 mit der oberen Abfrage wieder mit 30 befüllt.

    Das verstehe ich gerade überhaupt nicht.

  • Weil

    [autoit]

    If $var=""

    [/autoit]

    und

    [autoit]

    If $var=0

    [/autoit]

    unter AutoIt nunmal identisch ist, wenn die Variable "Leer" ist. Das wird Du nicht ändern.

    Für Deinen ersten Fall würde ich einfach

    [autoit]

    If StringLen($var) = 0

    [/autoit]

    nehmen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    • Offizieller Beitrag
    Zitat von HassanMullah

    das hatte ich ja selbst schon in die Lösung geschrieben (allerding weiss ich nicht, wo dieser optionale Text bei "gelöst" zu sehen ist.

    Bearbeite deinen 1. Post und ändere das Suffix auf gelöst.
    autoit.de/wcf/attachment/15928/

  • Das meinte er nicht sondern seinen Text

    Zitat

    Grund: Ich muss aus der Localen Variable eine Globale machen, dann geht es

    Welcher in Hellgrau am Ende seines ersten Post's steht, aber allen kaum aufgefallen ist. Ich muss es auch erst suchen, nachdem ich seinen Kommentar nicht verstanden habe.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    • Offizieller Beitrag

    Schau mer mal, was er meinte. Blicke durch die Buchstabensuppe eh nicht mehr durch :D

    Ok, ich glaub du hast recht, wie man Threads auf gelöst setzt, scheint er zu wissen. :P
    (Habe ich eben mal nachgesehe :evil: )