while beenden wenn...

03/01/2013 17:56 SkibbelsHD#1
hallo leute
ich hab ein problem. undzwar folgendes:
ich will, dass while 2 sich beendet, wenn der pixelsearch erfolgreich war. sprich, der script dann weitermacht...

Code:
While 2
MouseClick ("RIGHT", 833, 366)
MouseClick ("RIGHT", 613, 366)
Sleep (30000)

 WinExists("*****")
If @error then
	InputBox('*****','*****')
EndIf
WinActivate("*****")

$hPos = WinGetPos("*****")

$hResult = PixelSearch (767, 312, 767, 334, 0xCD1325)

If IsArray($hResult) Then
	Sleep (3000)
	MouseClick ("LEFT", 805, 481)
	Sleep (10000)
	MouseClick ("LEFT", 1070, 788)
    Sleep (3000)
EndIf

WEnd
hoffe, ihr könnt mir schnell helfen
danke schonmal im voraus
03/01/2013 17:59 luli-1#2
Quote:
Originally Posted by Fischerfreak View Post
hallo leute
ich hab ein problem. undzwar folgendes:
ich will, dass while 2 sich beendet, wenn der pixelsearch erfolgreich war. sprich, der script dann weitermacht...

Code:
While 2
MouseClick ("RIGHT", 833, 366)
MouseClick ("RIGHT", 613, 366)
Sleep (30000)

 WinExists("*****")
If @error then
	InputBox('*****','*****')
EndIf
WinActivate("*****")

$hPos = WinGetPos("*****")

$hResult = PixelSearch (767, 312, 767, 334, 0xCD1325)

If IsArray($hResult) Then
	Sleep (3000)
	MouseClick ("LEFT", 805, 481)
	Sleep (10000)
	MouseClick ("LEFT", 1070, 788)
    Sleep (3000)
EndIf

WEnd
hoffe, ihr könnt mir schnell helfen
danke schonmal im voraus
$notfound = 0

while $notfound = 0
pixelseach(456545ztrhgfghb45th56t)
if not @error then
$notfound = 1

wend
03/01/2013 18:02 SkibbelsHD#3
und wo soll das hin? sry aber bin in autoit relativ neu... pls den ganzen code posten
03/01/2013 18:07 luli-1#4
Quote:
Originally Posted by Fischerfreak View Post
und wo soll das hin? sry aber bin in autoit relativ neu... pls den ganzen code posten
normalerweiße soll man schon selbst progammieren und sich nur ratschläge holen : /

Code:
$notfound = 0 

While $notfound = 0 
	MouseClick ("RIGHT", 833, 366)
	MouseClick ("RIGHT", 613, 366)
	Sleep (30000)

	 WinExists("*****")
	If @error then
		InputBox('*****','*****')
	EndIf
	WinActivate("*****")

	$hPos = WinGetPos("*****")

	$hResult = PixelSearch (767, 312, 767, 334, 0xCD1325)
	if not @error Then
		$notfound = 1 ;~ 	oder mit ExitLoop arbeiten
		If IsArray($hResult) Then
			Sleep (3000)
			MouseClick ("LEFT", 805, 481)
			Sleep (10000)
			MouseClick ("LEFT", 1070, 788)
			Sleep (3000)
		EndIf
	EndIf
WEnd
und sich nichtmal bedanke ..
03/01/2013 23:54 SkibbelsHD#5
Ty geht
#closed
03/02/2013 01:34 Lumi#6
Du kannst nicht selber schließen.

Verwende den Melde Knopf. :)
03/02/2013 08:47 SkibbelsHD#7
Hab och auch gemerkt =) wird getan danke
03/02/2013 17:02 FacePalmMan#8
Code:
While 2
MouseClick ("RIGHT", 833, 366)
MouseClick ("RIGHT", 613, 366)
Sleep (30000)

 WinExists("*****")
If @error then
	InputBox('*****','*****')
EndIf
WinActivate("*****")

$hPos = WinGetPos("*****")

$hResult = PixelSearch (767, 312, 767, 334, 0xCD1325)

If IsArray($hResult) Then
	Sleep (3000)
	MouseClick ("LEFT", 805, 481)
	Sleep (10000)
	MouseClick ("LEFT", 1070, 788)
    Sleep (3000)
    [COLOR="Red"]Exitloop[/COLOR]
EndIf

WEnd
Exitloop beendet die zurzeit aktive schleife. egal was für eine schleife.
03/03/2013 12:30 xcyancali#9
Quote:
Exitloop beendet die zurzeit aktive schleife. egal was für eine schleife.
Auch bei do until & for next?
03/03/2013 12:37 lolkop#10
Quote:
Originally Posted by xcyancali View Post
Auch bei do until & for next?
ja... sollte aber nur verwendet werden, wenn schleifen mitten in ihren aktionen unterbrochen werden müssen.

der einzig sinnvolle einsatz, welcher mir bisher begegnet ist, war in such-schleifen, welche beim treffer natürlich sofort aus der schleife springen können.

da diese aber meist in externen funktionen aufgerufen werden, ist auch hier ein einfaches return deutlich besser geeignet.
03/04/2013 00:16 Lawliet#11
closed ( on request )