Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 15:38

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Hab ein kleines Problem

Discussion on Hab ein kleines Problem within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
Claiver's Avatar
 
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!!!
Claiver is offline  
Old 12/16/2013, 14:57   #2
 
alpines's Avatar
 
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.
alpines is offline  
Old 12/16/2013, 17:59   #3
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by alpines View Post
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(""1355444)
$Label1 GUICtrlCreateLabel("a"8828878)
GUICtrlSetFont(-1724000"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 
Shadow992 is offline  
Old 12/16/2013, 18:05   #4
 
alpines's Avatar
 
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.
alpines is offline  
Old 12/16/2013, 19:32   #5
 
FacePalmMan's Avatar
 
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
FacePalmMan is offline  
Old 12/16/2013, 19:34   #6
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Aber das Unregister am Ende nicht vergessen, wir wollen sauber scripten!
alpines is offline  
Old 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
SoulCr4ck is offline  
Old 12/17/2013, 00:15   #8
 
lolkop's Avatar
 
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
lolkop is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.