Turnier Timer

  • Hallo Leute,


    ich habe mal nach langer Zeit ein kleines Projekt angefangen.


    Original von Oscar  Oscar


    Ich brauche 3 Timer in der Schleife. (Schleife noch nicht realisiert)


    Diese Timer Starten alle gleiche, es gibt aktuell nur volle Minuten Unterschiede . (Timer 3 hat noch keine Funktion)

    #########################################

    Welche Funktion will ich umsetzten.


    Bei einen Turnier nach Zeit möchte ich


    - eine Spielzeit haben

    - ein Timer der die letzte Minute zählt

    - ein Timer der nach der Spielzeit startet (Pause)


    und dann geht es von vorne wieder los oder man Reset weil irgend was dazwischen gekommen ist in der Pause


    ######################################

    Gui muss ich noch anpassen

    - Menü wo ich die Zeiten und die Sounddatein festlegen kann

    - Wie häufig soll der Schleifendurchlauf sein
    - Progressbalken bei allen Timern

    ######################################

    später wäre noch eine Übergabe der Parameter per Kommandozeile (Zeiten) toll
    Vielleicht kann der Entwickler dieses Programmes Turnier Programm später den Timer aus seinem Programm ansteuern.


    Euch allen schon mal Danke für Änderungs Vorschläge oder Anpassungen.

    Steffen

  • So habe an meinen Code etwas rum geschrieben.

    Aktuelle fehlt noch:

    - Einstellmenü
    - verschiedene Sound
    - Pause Timer einstellen (angefangen noch nicht beendet)
    - Pause läuft nach Spielzeit
    - Balken für Pause (vorbereitet)


  • Hallo,

    Irgendwie geht meine Restore Funktion nicht.

    Das Icon geht in den Tray.
    Allerdings bekomme ich es nicht mehr geöffnet.

    Schließen und öffnen habe ich hier rein geschrieben.


    Funktionsbereich

    Code
    1. GUISetOnEvent($GUI_EVENT_CLOSE, _Minimize)
    2. GUISetOnEvent($GUI_EVENT_MINIMIZE, _Minimize)
    3. TraySetOnEvent(-7, "_Restore")

    Funktion

    Code
    1. Func _Restore()
    2. TraySetState(4)
    3. GUISetState(@SW_SHOWDEFAULT)
    4. EndFunc ;==>_Restore
    5. #EndRegion menue

    Gesamtcode

  • Hallo,


    habe mal am Wochenende weiter geschrieben.


    Einstellungsmenü gemacht.

    Jetzt habe ich das Problem, dass ich die Pause nicht mit den 2 neuen Buttons einstellen kann.

    Ich blicke da selber gerade nicht durch.

    Falls jemand sagt: Das Einstellungsmenü kann man sauber lösen lerne ich gerne dazu.


  • Das Skript ist so nicht lauffähig, es tauchen dutzende Fehlermeldungen auf. Bitte poste doch ein vollständiges Skript oder lade ein Archiv mit den entsprechenden Dateien hoch.

    Wobei ich den ersten Fehler gerade schon gefunden habe.
    Funktion habe ich _ChangeTimerPauseSeconds geändert und jetzt klappt es mit dem hoch und runter.
    Allerdings nimmt er noch die normale Zeit. Beim ersten einstellen.
    Auch das Reseten der Pausen Zeit geht nicht.

    Danke schon mal für die Hilfe.

  • Ich hab das Problem noch nicht ganz verstanden, kannst du kurz schildern wie der Fehler auftritt und was das Soll-Verhalten sein soll?

    Übrigens startet das Skript bei mir nicht in SciTE, nur über den Explorer, da du angeblich eine globale Variable versuchst aufzurufen bevor sie deklariert wurde.

  • Hallo alpines ,


    so habe dran rum geschrieben. Fehlermeldungen sind erstmal weg.

    Folgendes Problem habe:


    Wenn Spielzeit auf 0 gelaufen ist soll die Pausenzeit starten.

    Das bekomme ich nicht hin.
    Die "_ProgressEx.au3" und "_DateiEx.au3" hat sich nicht geändert.



  • Hallo,


    ok das Problem habe ich auch verstanden und gelöst.


    Jetzt kommt nur noch ein Problem wo ich nicht den Ansatz finde.


    Dies hat auch schon mal funktioniert und ich finde den Fehler nicht.

    Die $aProgress2 funktioniert nicht, dies ist die Pausenzeitanzeige. (Zeile 222)

    Die $aProgress1 funktioniert wie Sie soll. (Zeile 205)



  • Du verwendest glaube ich den falschen Parameter.


    In der ChangeTimer-Funktion benutzt du den Parameter $iTime nie, in der ChangeTimerPause-Funktion benutzt du aber respektive $iTimerPause.

    Wenn ich den $iTimerPause Wert ausgeben lasse liegt er irgendwo bei 700.000 bei mir, und das kann ja wohl nicht im Rahmen deiner Berechnung liegen.


    Ein kurzer Blick nach oben im Skript und ich sehe, dass du $iTimerPause außerhalb der Funktion global deklariert und definiert hast.

    Da der Parameter allerdings den selben Namen trägt, wird er immer den Parameter bzw. den lokalen Scope zuerst verwenden und dann den globalen.

    Gebe ich dem Parameter einen Namen (egal welchen) funktioniert der Balken einwandfrei.

  • Ich hatte, dass die ganze Zeit im Kopf das ich da was nicht so sauber gemacht habe.

    Und den Wert mal anzeigen ist mir auch nicht in den Sinn gekommen.

    Werde ich mal umschreiben! Danke

  • Hallo,


    hatte heute wieder etwas Zeit um an meinem Code zuarbeiten.


    Ich möchte im Einstellmenü verschiedene GUI einstellen und dann "neuzeichen"


    Dies geht auch im Prinzip.


    Die MsgBox Funktionen sind nur zum testen.


    Nach dem Speicher in der Funktion


    Code
    1. _settings_save()
    2. ...
    3. GUIDelete($hGui)
    4. GUIDelete($SettingGui)
    5. _Fenster()
    6. _ResetTimer()

    Wird zwar ein neues Fenster gezeichnet nur leider gehen keine Controlls mehr

    z.B.

    Global $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)

    GUICtrlSetOnEvent(-1, "_Exit")


    Was mache ich da falsch?


    Danke für die Hilfe


    SCCSSF

  • Ehrlich gesagt blicke ich durch deinen Code nicht wirklich durch. Du solltest ihn auf jeden Fall umstrukturieren denn du hast einige kritische Fehler drin.


    Definiere niemals globale Variablen in Funktionen! Au3 Check rastet komplett aus und du kannst Bugs nur sehr schwierig zurückverfolgen. Du darfst dort nur den Wert setzen!

    Definiere niemals statische GUIs in Funktionen! Erzeuge das Fenster vorher und verstecke es, wenn du es brauchst setzt du die Daten und zeigst es an und versteckst das andere.


    Wenn du letzteres anwendest brauchst du auch nicht ständig neue Events zu setzen. Du kannst die Funktion einmal registrieren und dabei belassen.

    Die Zuordnung verschwindet nicht wenn du die GUI @SW_HIDEst und dann wieder @SW_SHOWst.

  • Dies mit den Fehlern versteh ich nicht. (Hast du meine include von Post 2 geladen?)


    ############################################

    AutoIt3 Syntax Checker v3.3.14.2 Copyright (c) 2007-2013 Tylo & AutoIt Team


    C:\Users\Peter\Desktop\Timer\Spielzeit ohne.au3 - 0 error(s), 0 warning(s

    ############################################


    Gut die Variable kann ich umschreiben und vorher erstellen.

    Das mit dem ein und ausblenden mache ich eigentlich mit dem "Einstellmenü".


    Nun möchte ich allerdings mein HauptGUI unterschiedlich gestalten und nach dem Speichern neuzeichen.


  • Mit den Includes hat das nichts zu tun, Au3Check kann Warnungen rausschmeißen wenn du auf globale Variablen zugreifst du erst in einer Funktion deklariert werden auch wenn die Funktion vorher ausgeführt wird.

    Es ist sehr sehr schlechter Stil den man sich abgewöhnen sollte.


    Du blenst die GUI aber nicht ein und aus, du erzeugst die GUIs neu. Sofern du auf der HauptGUI keine dynamischen Elemente hast (bspw. variierende Anzahl an Labels auf der selben GUI oder ähnliches) solltest du beide vorher erstellen und nur GUISetState zum ein und ausblenden nutzen.

  • So Global habe ich geändert. alpines so besser ?

    Habe zur Übersichtlichkeit die Globel zum großen Teil einzeln geschrieben.


    Hab den Code mal angehängt.

    Das mit den Fenster versuche ich anders zu lösen.

    Dazu schreibe ich einen anderen Beitrag.