|
You last visited: Today at 15:38
Advertisement
Hab ein kleines Problem
Discussion on Hab ein kleines Problem within the AutoIt forum part of the Coders Den category.
12/16/2013, 14:40
|
#1
|
elite*gold: 0
Join Date: Nov 2013
Posts: 36
Received Thanks: 6
|
Hab ein kleines Problem
Also...
Ich hab ein kleines Script als Probe geschrieben, nur um nach diesem Fehler zu fragen...
Also
Code:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("", 135, 54, 4, 4)
$Label1 = GUICtrlCreateLabel("a", 8, 8, 288, 78)
GUICtrlSetFont(-1, 72, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
GUICtrlSetData($Label1,@HOUR&":"&@MIN&":"&@SEC)
Sleep(1000)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Ich will dass das Programm schließt wenn ich auf "X" drücke, aber wegen der While Schleife funktioniert es nicht... Ich will aber die While Schleife drinnen lassen und mit "X" das Programm schließen können...
HILFE!!!
|
|
|
12/16/2013, 14:57
|
#2
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Hab ein kleines Problem
Es schließt nicht weil du nicht auf X drückst wenn die Msg abgerufen wird.
Wenn du die Sleep(1000) da entfernen würdest dann würde es funktionieren.
Wenn du aber alle 1s den setten möchtest kannst du das hier versuchen (im Browser getippt)
Du musst einen Timer initiieren und erst setten wenn es kleiner als Mod(TimerDiff($timer), 1000) kleiner als 50 z.B. ist.
|
|
|
12/16/2013, 17:59
|
#3
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
|
Quote:
Originally Posted by alpines
Es schließt nicht weil du nicht auf X drückst wenn die Msg abgerufen wird.
Wenn du die Sleep(1000) da entfernen würdest dann würde es funktionieren.
Wenn du aber alle 1s den setten möchtest kannst du das hier versuchen (im Browser getippt)
Du musst einen Timer initiieren und erst setten wenn es kleiner als Mod(TimerDiff($timer), 1000) kleiner als 50 z.B. ist.
|
Prinzipiell eine mögliche Idee, aber die Mod-Variante hat ihre Tücken, wenn beispielsweise die Schleife aus irgendeinem Grund länger als 1msec braucht, kann es passieren, dass du Mod(...,1000) nie erfüllt hast.
Wenn du das Ganze abfangen willst mit "<50", dann kann es bei sehr kleinen Schleifen (wie hier) immernoch zu einem Flackern kommen, da es ca 50x die Schleife durchläuft, bis 50msec rum sind.
Daher empfiehlt sich mit Zeit-Differenzen zu arbeiten:
PHP Code:
#include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("", 135, 54, 4, 4) $Label1 = GUICtrlCreateLabel("a", 8, 8, 288, 78) GUICtrlSetFont(-1, 72, 400, 0, "MS Sans Serif") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ###
$timer=TimerInit()
While 1 if (TimerInit()-$timer)>=1000 then GUICtrlSetData($Label1,@HOUR&":"&@MIN&":"&@SEC) $timer=TimerInit() endif $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd
|
|
|
12/16/2013, 18:05
|
#4
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Das hab ich schnell im Browser getippt, natürlich hätte ich das auch anders gelöst aber fürs erste hätte es ja gereicht.
|
|
|
12/16/2013, 19:32
|
#5
|
elite*gold: 0
Join Date: Jan 2013
Posts: 426
Received Thanks: 129
|
oder einfacher:
Code:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("", 135, 54, 4, 4)
$Label1 = GUICtrlCreateLabel("a", 8, 8, 288, 78)
GUICtrlSetFont(-1, 72, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Adlibregister("SetData",1000)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func SetData()
GUICtrlSetData($Label1,@HOUR&":"&@MIN&":"&@SEC)
EndFunc
|
|
|
12/16/2013, 19:34
|
#6
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Aber das Unregister am Ende nicht vergessen, wir wollen sauber scripten!
|
|
|
12/16/2013, 23:06
|
#7
|
elite*gold: 0
Join Date: Nov 2013
Posts: 297
Received Thanks: 511
|
Code:
AdlibRegister("NFunc",1000)
Func NFunc()
;here what you want to do
endfunc
oder GuiSetOnEventMode
|
|
|
12/17/2013, 00:15
|
#8
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
der einzige grund für das intervall des setzens liegt darinn, nicht zu oft das ganze zu aktualisieren... das ganze kann man auch viel einfacher und vorallem sauberer etwa so lösen:
Code:
GUICreate("", 135, 40, Default, Default, 0x10C80000)
$label = GUICtrlCreateLabel('', 10, 10, 115, 20)
While GUIGetMsg()<>-3
SetControlText($label, @HOUR&":"&@MIN&":"&@SEC)
WEnd
Func SetControlText($control, $text)
If GUICtrlRead($control)<>$text Then GUICtrlSetData($control, $text)
EndFunc
|
|
|
 |
Similar Threads
|
Hmm kleines Problem...
12/22/2010 - WarRock - 7 Replies
UOOOOOOOWW seit etwa ein halbes jahr habe ich hier nicht mehr vorbei geschaut ;) ich bin wieder da...
Ich habe schon lange nicht mehr Warrock gezockt.. und heute
hatte ich gerade wieder lust drauf...
Ich habs mir runtergeladen und dan gepatcht usw.. alles ganz NORMAL
Doch wenn ich es starten will kommt das erste Fenster klicke ich OK
das zweite Fenster OK
dann kommt ja unten rechts dieses kleine Hackshield fenster...
das ladet dann auch aber nach dem es weg ist passiert nichts mehr..
|
kleines problem
09/08/2010 - Metin2 Private Server - 0 Replies
hi ihr ^^ ich wollte mir nen eigenen server zu testzwecken erstellen aber bekomme ein kleines problem...
PUBLIC_IP: ********* interface de0
hostname first_ch2
PLAYER_SQL: localhost mt2 mt2!@# player
COMMON_SQL: localhost mt2 mt2!@# common
LOG_SQL: localhost mt2 mt2 @!# log
mysql_real_connect: Cant´t connect to local MySql server throug the socket ´/tmp/mysql.sock (2)
Cannot start server while no player sql connected
|
kleines Problem
09/23/2008 - General Gaming Discussion - 6 Replies
Grüße euch,
ich hab da nen Problem undzwar, wenn ich ein Szenario joine habe ich das Gruppenfenster auf der linken Seite und sobald ich die Szenariogruppen anschalte, liegen diese direkt auf meinem Gruppenfenster und es ist auch nicht möglich sie zu verschieben, gibt es einen Befehl oder eine Option wo ich das Gruppenfenster disablen kann, sobald ich ein Szenariogruppenfenster öffne?
mfg
|
All times are GMT +1. The time now is 15:40.
|
|