Verzweiflung bei Timer aufruf

  • Hallo erstmal ,
    ich bin noch Anfänger bzw. ich benutzte Autoit erst seit gestern .... und habe versucht mich einzuarbeiten.
    Ich habe nun mit ein Paar GUI-Funktionen rumexperimentiert, allerdings komme ich nicht weiter

    Erstmal das was ich bereits habe:

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <FileConstants.au3>
    #include <Timers.au3>

    Dim $TimerInit
    Dim $Timer

    $TimerInit = TimerInit()

    ;GUI
    Local $hGUI = GUICreate("Example",1000,500)

    ;Button
    Local $idOK = GUICtrlCreateButton("Speichern und Beenden", 10, 10, 200, 25)

    GUICtrlCreateLabel ("Datum" , 10,40,100,20)
    GUICtrlCreateLabel ("Uhrzeit:" ,110,40,100,20)
    GUICtrlCreateLabel ("Prozessor:" ,210,40,100,20)
    GUICtrlCreateLabel ("Ram:" ,310,40,100,20)
    GUICtrlCreateLabel ("Grafikkarte:",410,40,100,20)
    GUICtrlCreateLabel ("Festplatte:" ,510,40,100,20)
    GUICtrlCreateLabel ("Eintrag NR.:",610,40,100,20)
    GUICtrlCreateLabel ("Zeit:" ,710,40,100,20)

    Local $TabelleJ=GUICtrlCreateButton("Start", 220, 10, 200, 25)
    Local $TabelleN=GUICtrlCreateButton("Stop", 430, 10, 200, 25)
    GUICtrlCreateButton("Reset Min/Max", 640, 10, 200, 25)

    Local $date = @MDAY & "/" & @MON & "/" & @YEAR
    Local $time = @HOUR & ":" & @MIN & " " & @SEC &" Sek"
    Local $aMem = MemGetStats()
    Local $DDR=($aMem[0])

    While 1
    Switch GUIGetMsg()

    Case $GUI_EVENT_CLOSE, $idOK
    Exit
    EndSwitch

    $date = @MDAY & "/" & @MON & "/" & @YEAR
    $time = @HOUR & ":" & @MIN & " " & @SEC &" Sek"
    $aMem = MemGetStats()
    $DDR=($aMem[0])

    Local $Text1= GUICtrlCreateList ("",10 ,60,100,30 )
    GUICtrlSetData ( -1, $date)
    Local $Text2= GUICtrlCreateList ("",110,60,100,30 )
    GUICtrlSetData ( -1, $time)
    Local $Text3= GUICtrlCreateList ("",210,60,100,30 )
    GUICtrlSetData ( -1, $DDR)
    Local $Text4= GUICtrlCreateList ("",310,60,100,30 )
    GUICtrlSetData ( -1, $time)
    Local $Text5= GUICtrlCreateList ("",410,60,100,30 )
    GUICtrlSetData ( -1, $time)
    Local $Text6= GUICtrlCreateList ("",510,60,100,30 )
    GUICtrlSetData ( -1, $time)
    Local $Text7= GUICtrlCreateList ("",610,60,100,30 )
    GUICtrlSetData ( -1, $time)
    Local $Text8= GUICtrlCreateList ("",710,60,100,30 )
    GUICtrlSetData ( -1, $time)

    GUISetState(@SW_SHOW, $hGUI)

    WEnd


    Ich möchte nun die Schleife dazu bringen nur jede Sekunden alle Werte in der Liste zu überschreiben.
    Ich habe mir gedacht das ich das mit einem Timer machen muss da der Befehl Sleep() für Fehler sorgt
    und ich dann noch etwas mit einer If-Schleife. Ich sitze jetzt nun seit ungelogenen 12 Stunden daran mich durch verschiedene Anwendungsmöglichkeiten der oben
    genannten Mittel zu probieren und komme einfach nicht weiter, irgendwas läuft immer falsch.
    Danke schon mal im vorraus ?(:S

    • Offizieller Beitrag

    Hi und wilkommen im Forum.

    Hier mal dein Script als Lauffähig, dabei wird AdlibRegister benutzt um die Daten alle 1 Sekunde zu setzen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <FileConstants.au3>

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

    Local $date = @MDAY & "/" & @MON & "/" & @YEAR
    Local $time = @HOUR & ":" & @MIN & " " & @SEC & " Sek"
    Local $aMem = MemGetStats()
    Local $DDR = ($aMem[0])

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

    ;GUI
    Local $hGUI = GUICreate("Example", 1000, 500)

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

    ;Button
    Local $idOK = GUICtrlCreateButton("Speichern und Beenden", 10, 10, 200, 25)

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

    GUICtrlCreateLabel("Datum", 10, 40, 100, 20)
    GUICtrlCreateLabel("Uhrzeit:", 110, 40, 100, 20)
    GUICtrlCreateLabel("Prozessor:", 210, 40, 100, 20)
    GUICtrlCreateLabel("Ram:", 310, 40, 100, 20)
    GUICtrlCreateLabel("Grafikkarte:", 410, 40, 100, 20)
    GUICtrlCreateLabel("Festplatte:", 510, 40, 100, 20)
    GUICtrlCreateLabel("Eintrag NR.:", 610, 40, 100, 20)
    GUICtrlCreateLabel("Zeit:", 710, 40, 100, 20)

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

    Local $TabelleJ = GUICtrlCreateButton("Start", 220, 10, 200, 25)
    Local $TabelleN = GUICtrlCreateButton("Stop", 430, 10, 200, 25)
    GUICtrlCreateButton("Reset Min/Max", 640, 10, 200, 25)
    Local $Text1 = GUICtrlCreateList("", 10, 60, 100, 30)

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

    GUICtrlSetData(-1, $date)
    Local $Text2 = GUICtrlCreateList("", 110, 60, 100, 30)
    GUICtrlSetData(-1, $time)
    Local $Text3 = GUICtrlCreateList("", 210, 60, 100, 30)
    GUICtrlSetData(-1, $DDR)
    Local $Text4 = GUICtrlCreateList("", 310, 60, 100, 30)
    GUICtrlSetData(-1, $time)
    Local $Text5 = GUICtrlCreateList("", 410, 60, 100, 30)
    GUICtrlSetData(-1, $time)
    Local $Text6 = GUICtrlCreateList("", 510, 60, 100, 30)
    GUICtrlSetData(-1, $time)
    Local $Text7 = GUICtrlCreateList("", 610, 60, 100, 30)
    GUICtrlSetData(-1, $time)
    Local $Text8 = GUICtrlCreateList("", 710, 60, 100, 30)
    GUICtrlSetData(-1, $time)
    GUISetState(@SW_SHOW, $hGUI)

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

    AdlibRegister("_SetData", 1000)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $idOK
    Exit
    EndSwitch

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

    WEnd

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

    Func _SetData()
    $date = @MDAY & "/" & @MON & "/" & @YEAR
    $time = @HOUR & ":" & @MIN & " " & @SEC & " Sek"
    $aMem = MemGetStats()
    $DDR = ($aMem[0])
    GUICtrlSetData($Text1, $date)
    GUICtrlSetData($Text2, $time)
    GUICtrlSetData($Text3, $DDR)
    GUICtrlSetData($Text4, $time)
    GUICtrlSetData($Text5, $time)
    GUICtrlSetData($Text6, $time)
    GUICtrlSetData($Text7, $time)
    GUICtrlSetData($Text8, $time)
    EndFunc ;==>_SetData

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


    Den Sinn hinter den ganzen Listboxen verstehe ich aber nicht so ganz. WIllst du wirklich die Daten in einer Liste haben?
    Wenn ja, dann sind 8 Listboxen dafür absolut umgeeignet, da die einzelnen Einträge (Reihen ) der LIstboxen nicht miteinander verknüpft sind.
    Dafür würde ich dir eher ein Listview empfehlen.

  • OK erstmal danke dafür, und wie mache ich das jetzt das die Tabellen von unten nach oben angezeigt werden. Also das die Liste nicht nach unten größer wird sondern nach oben. Und das wenn ich einen Regler Bewege sich alle ändern also das die Einträge von einer Sekunde immer nebeneinander sind. Was macht den der Befehl Listview ? Und wieso steht bei der CPU und der Datum Liste nur immer der gleiche Wert wenn sich der nicht verändert und wie kann ich das ändern

    • Offizieller Beitrag

    Benutze nicht 8 Listboxen, sondern nur 1 Listview.

    Zitat von Scopii

    Und wieso steht bei der CPU und der Datum Liste nur immer der gleiche Wert wenn sich der nicht verändert und wie kann ich das ändern

    Eine Listbox kennt keine doppelten Eintragungen, d.h. wenn du 10 mal "52" in die Liste einfügst, steht nur 1 mal "52" darin.
    Bei der Darstellun mir einem ListView wären die einzelnen Daten in den Spaltem miteinander verbunden, Daten können auch x mal gleich sein.