Timer anzeigen lassen...

  • Hallo, ich habe ein kleines Programm geschrieben, wo ich einen Server anfragen kann.

    Nun würde ich gerne noch den Timer anzeigen lassen, weiss aber nicht wie ich das anstellen soll...

    Das Programm macht schon soweit was es soll, aber falls einer einen Verbesserungsvorschlag hat, ist das gerne gesehen.

    Vielen dank schon einmal.


    Server Status.au3

    config.ini

  • Das Programm macht schon soweit was es soll, aber falls einer einen Verbesserungsvorschlag hat, ist das gerne gesehen.

    Ja, benutz doch bitte Arrays statt jedes Control einzeln zu definieren, damit sparst du dir 60% des Codes.

    Nun würde ich gerne noch den Timer anzeigen lassen, weiss aber nicht wie ich das anstellen soll...

    Was soll der Timer denn anzeigen, du musst schon ein bisschen mehr Infos rausgeben.

  • Danke Alpines.

    Wie mache ich das mit Arrays?

    Hab ich vergessen ;)

    Der Timer soll die ablaufende Zeit anzeigen, ganz unten ist das Feld schon eingeblendet.

    Und wenn die Vorgegebene Zeit (5min) abgelaufen ist, dann soll die Funktion _ServerCheck() aufgerufen werden und der Timer neu gestartet werden und natürlich wieder angezeigt werden.

  • Und wenn die Vorgegebene Zeit (5min) abgelaufen ist, dann soll die Funktion _ServerCheck() aufgerufen werden und der Timer neu gestartet werden und natürlich wieder angezeigt werden.

    Schau dir mal AdlibRegister an, damit kannst du eine bestimmte Funktion alle x Millisekunden ausführen, und in der registrierten Funktion setzt du einfach das Label vom Timer.

    Hier ein kleines Beispiel wie man mit Arrays Inis einliest und Controls erzeugt.

  • Aus _FirstCheck() und _ServerCheck() kannst du eine Funktion machen, wobei ich eh nicht verstehe, wieso du in _FirstCheck() beide Hintergrundfarben setzt, und in _ServerCheck() nur eine.

    If $socket1 = -1 Then

    Das kann in die Hose gehen, weil $socket1 im Fall eines Fehlers auch 0 sein kann... deshalb besser auf @error prüfen! Zudem solltest du den Socket mit TCPCloseSocket() wieder schließen, wenn du ihn nicht mehr brauchst!

    Mit dem Tenary-Operator kannst du auch noch einige Zeilen an Code einsparen... das ist eine verkürzte Form von If...Else...EndIf.

    Hier ein Bsp.:

  • Bitnugger: Vielen Dank ! Das hat mir sehr geholfen.

    Ich muss noch wie alpines vorschlug das alles mit den Arrays machen.

    Aber ich bin schon mal ein ganzes Stück weiter.
    Der Timer läuft nun auch und sieht besser aus.

    Was müsste ich machen, damit ich die erste Fehlermeldung bei jedem Server behalte und angezeigt bekomme?
    Also wenn Server 1 ausfällt, dann möchte ich nur die erste Down + Datum/Zeit-Meldung, wann er ausgefallen ist, sehen.
    In der Funktion wird das ja jedesmal aktualisiert...

    Wie kann ich das lösen?

    Mein Code schaut zZ so aus:

  • Also wenn Server 1 ausfällt, dann möchte ich nur die erste Down + Datum/Zeit-Meldung, wann er ausgefallen ist, sehen.

    Dazu hast du doch die ServerCheck Methode, da drin kannst du die entsprechenden Sachen setzen.

    Wenn der Server nicht antwortet setzt du das Label, wenn er antwortet lässt du es einfach frei.

    Möchtest du, dass die GUI kleiner wird kannst du mit WinSetPos das Fenster kleiner machen und die anderen Meldungslabel verstecken.

    Möchtest du nur GUI Elemente verstecken kannst du das mit der GUICtrlSetState-Funktion erledigen.

  • Funktion _Countdown - da erzeugst du alle 1000 ms ein neues Label... obwohl du nur eines brauchst! Das solltest du vorher einmalig erzeugen!

    Damit wir nicht jedes Sandkorn einzeln umdrehen müssen, habe ich dir dein Script mal ein wenig umgeändert, so dass du sehen kannst, wie das mit den Arrays funktioniert und nebenbei auch noch ein paar Fehler korrigiert.

  • Bitnugger

    WoW, vielen dank ! Ich würde ja 'Thanks' klicken, gibt es aber nicht ;)

    CANTARA ist richtig, hab ich beim 2. ein 'N' vergessen ;)

    Das sieht super aus und macht auch soweit das was ich mir vorgestellt habe.

    Kann ich die 'consolewrite' rausnehmen wenn ich es Builden will oder stört das dann nicht? Es läuft ja so auch. ;)

    Ich werde mir das noch einmal genauer angucken, denn ich will das auch verstehen ;)

    Leider bin ich noch kein Profi wie viele hier, aber ich bin bemüht mein Wissen zu erweitern.

    Also noch einmal VIELEN DANK !

    Nachtrag:

    Mir ist grade aufgefallen, das die OK-Meldung nur einmal ausgegeben wird.

    Die OK-Meldung sollte jedesmal ausgegeben werden, nur die DOWN-Meldung sollte nur beim DOWN 1x ausgegeben werden.

    Somit weiss ich dann wann die letzte OK-Prüfung war und seit wann ein Server DOWN ist.

    Könntest Du mir bitte dabei noch einmal kurz helfen?

    Danke.

    Einmal editiert, zuletzt von Ram3000 (5. März 2019 um 09:55)

  • Kann ich die 'consolewrite' rausnehmen wenn ich es Builden will oder stört das dann nicht?

    Ja, kannst du... du kannst es aber auch so machen:

    If Not @Compiled Then ConsoleWrite('Dieser Text wird nur ausgegeben, wenn das Script nicht kompiliert ist!' & @CRLF)

    Eine Consolenausgabe im kompilierten Script hast du aber eh nur, wenn du es als CUI kompilierst... dazu wird folgende Direktive im Script gesetzt:

    #AutoIt3Wrapper_Change2CUI=y

    Die OK-Meldung sollte jedesmal ausgegeben werden, nur die DOWN-Meldung sollte nur beim DOWN 1x ausgegeben werden.

    Ja... eigentlich kein großes Ding, aber ich werde dir am WE besser ein komplett neues Script dafür schreiben... da hast du weitaus mehr von!

  • Ja, kannst du... du kannst es aber auch so machen:

    If Not @Compiled Then ConsoleWrite('Dieser Text wird nur ausgegeben, wenn das Script nicht kompiliert ist!' & @CRLF)

    Eine Consolenausgabe im kompilierten Script hast du aber eh nur, wenn du es als CUI kompilierst... dazu wird folgende Direktive im Script gesetzt:

    #AutoIt3Wrapper_Change2CUI=y

    Ja... eigentlich kein großes Ding, aber ich werde dir am WE besser ein komplett neues Script dafür schreiben... da hast du weitaus mehr von!

    wow cool. Das ist echt sehr nett von Dir !

    Da bin ich ja schon gespannt ;)

    DANKE!

  • Ja... eigentlich kein großes Ding, aber ich werde dir am WE besser ein komplett neues Script dafür schreiben... da hast du weitaus mehr von!

    Hallo Bitnugger,
    war Du schon dabei und hast ein neues Script erstellen können ? *VorsichtigFragNach* ;)
    Würde mich wirklich freuen, wenn Du da noch etwas machen würdest.
    Danke schon einmal.

  • Hallo Bitnugger,
    war Du schon dabei und hast ein neues Script erstellen können ? *VorsichtigFragNach* ;)
    Würde mich wirklich freuen, wenn Du da noch etwas machen würdest.

    Das Grundgerüst für dein Script habe ich bereits fertig und du stehst auch ganz oben auf meiner privaten ToDo-List... ich habe zu deinem Leidwesen aber auch noch eine geschäftliche ToDo-List... und die hat eine höhere Priorität. Ich denke, die werde ich zum WE hin abgearbeitet haben und dann bist du wieder dran. :saint: