Uhrzeit in Autoit

11/26/2011 13:06 noahrmal#1
Ich versuche einen Timer zu machen der nach einer bestimmten zeit (Stunden und Minuten) eine funktion macht.

So funktioniert alles so wie ich das will:

Nur wenn ich das dann unter meine Gui packe funktioniert das nicht mehr.

Weiß jmd woran das liegt? Ich probiere das schon fast 2h ._. Fals jmd. das ganze script brauch bitte melden.
11/26/2011 13:10 bollen#2
du könntest das so lösen
Code:
If @HOUR & ":" & @MIN="13:30" Then
 run("deinProgramm")
 EndIf
11/26/2011 13:58 noahrmal#3
Ich habe das jetzt so, wie müsste ich das verbessern?

PHP Code:
Func _startAt()
    
$DauerStd2 GUICtrlRead($Input3)
    
$DauerMin2 GUICtrlRead($Input4
    If @
HOUR=$DauerStd2 And @MIN=$DauerMin2 Then MsgBox("hey, funzt");_toDo()
EndFunc 
11/26/2011 14:00 2F4U#4
An sich garnicht passt doch alles so oder nicht ?
11/26/2011 14:16 noahrmal#5
Ach ich bin so Dumm -.- While/Wend Schleife vergessen.

#clsrqst.
11/27/2011 14:32 noahrmal#6
#neues Problem - siehe oben.
11/27/2011 14:47 Lawliet#7
AdLib mal in der obersten While callen.
11/27/2011 14:53 bollen#8
du kommst nicht über deine while schleife raus
Code:
[COLOR=#007700][FONT=Courier New]While [/FONT][/COLOR][FONT=Courier New][COLOR=#0000bb]1
Sleep[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]250[/COLOR][/FONT][COLOR=#007700][FONT=Courier New]) 
[/FONT][/COLOR][FONT=Courier New][COLOR=#0000bb]WEnd

AdlibRegister[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"_start"[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]1000[/COLOR][/FONT][COLOR=#007700][FONT=Courier New])[/FONT]

[/COLOR]
11/27/2011 17:04 lolkop#9
timer sollten immer über timerfunktionen laufen :)

hier ein beispielcode, welcher alle 2 sekunden etwas in die console schreibt
Code:
Dim $timer = TimerInit()

While 1
	If TimerDiff($timer) > 2000 Then
		ConsoleWrite('BAM'&@CRLF)
		$timer = TimerInit()
	EndIf
WEnd
11/28/2011 16:09 noahrmal#10
Quote:
Originally Posted by bollen View Post
du kommst nicht über deine while schleife raus
Code:
[COLOR=#007700][FONT=Courier New]While [/FONT][/COLOR][FONT=Courier New][COLOR=#0000bb]1
Sleep[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]250[/COLOR][/FONT][COLOR=#007700][FONT=Courier New]) 
[/FONT][/COLOR][FONT=Courier New][COLOR=#0000bb]WEnd

AdlibRegister[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"_start"[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]1000[/COLOR][/FONT][COLOR=#007700][FONT=Courier New])[/FONT]

[/COLOR]
Genauer Bitte

Quote:
Originally Posted by lolkop View Post
timer sollten immer über timerfunktionen laufen :)

hier ein beispielcode, welcher alle 2 sekunden etwas in die console schreibt
Code:
Dim $timer = TimerInit()

While 1
	If TimerDiff($timer) > 2000 Then
		ConsoleWrite('BAM'&@CRLF)
		$timer = TimerInit()
	EndIf
WEnd
Wie soll man dann so ein Timer machen wenn man in 2 Gui Inputfelder einmal "Stunden" und "Minuten" eingibt?
11/28/2011 18:43 lolkop#11
millisekunden umrechnen in stunden minuten und sekunden sollte doch nicht so das problem sein oder? :P

11/28/2011 22:10 noahrmal#12
Quote:
Originally Posted by lolkop View Post
millisekunden umrechnen in stunden minuten und sekunden sollte doch nicht so das problem sein oder? :P

Ja sowas habe ich gesucht, wie kann ich das einbauen das in der GUI nicht die Zeit angezeigt wird?
11/28/2011 22:57 lolkop#13
das ist natürlich noch einfacher. dann brauchst du ja lediglich ein timerinit setzen, und nach der endzeit das ganze zuschlagen lassn...

Code:
GUICreate('timer', 220, 70, Default, Default, 0x10C80000)
Dim $end, $timer, $running = False, $input[3], $name[3]=['Stunden','Minuten','Sekunden'], $button[2]=['Start','Stop']
For $i=0 To 2
	GUICtrlCreateGroup($name[$i], 5+70*$i, 5, 70, 40)
	$input[$i]=GUICtrlCreateInput('', 10+70*$i, 20, 60, 20, 1)
Next
$go=GUICtrlCreateButton('Start', 5, 45, 210, 20)

While 1
	Switch GUIGetMsg()
		Case -3
			Exit
		Case $go
			$running = Not $running
			GUICtrlSetData($go, $button[$running])
			$end = Convert($input)
			$timer=TimerInit()
		Case Else
			If $running And TimerDiff($timer)>=$end Then
				$running = False
				GUICtrlSetData($go, $button[$running])
				MsgBox(0, 'Info', 'Game Over')
			EndIf
	EndSwitch
WEnd

Func Convert($array)
	Return 1000*(60*(60*(GUICtrlRead($array[0]))+GUICtrlRead($array[1]))+GUICtrlRead($array[2]))
EndFunc