2 schleifen in einer Funktion?

10/02/2016 16:25 Mogile#1
Guten Tag,

kann mir jemand sagen, warum ich hier immer ""C:\Users\***\Desktop\test.au3" (35) : ==> "While" statement has no matching "Wend" statement.:
Exit" bekomme?

Code:
HotKeySet("{F1}","Start")
HotKeySet("{F5}","Stopp")


While 1
sleep(500)
WEnd

Func Start()
   While 1
   Sleep(200)
$array_pos = PixelSearch(809,683,967,692,0x7F271B,10)
   if @error = 0 then
   MouseClick("left",$array_pos[0], $array_pos[1],1,0)
Else
   While 2
        Sleep(200)
$array_pos = PixelSearch(270,844,349,849,0x311A09,10)
   if @error = 0 then
   MouseClick("left",$array_pos[0], $array_pos[1],1,0)
   Else




EndIf
WEnd
WEnd

EndFunc




   Func Stopp()
Exit
Mit freundlichen Grüßen
10/02/2016 17:43 M3mphizzt#2
es geht nur while 1 oder 0 / 1 = true weiss jetz nich genau aber glaube wenn du eine 2. schleife machen willst musst entweder erst aus der 1. schleife raus versuchst es mit continue loop oder mit einer for schleife weiss ich jetz auch nicht genau
10/02/2016 21:26 Moneypulation#3
Deine erste bzw. zweite If-Abfrage schließt du nirgends mit EndIf
10/02/2016 21:44 M3mphizzt#4
soweit ich weiss kann er auch die mousclicks direkt hinter das then setzen dann brauch er kein endif geht zumindest bei mir immer
Code:
 if @error = 0 then MouseClick("left",$array_pos[0], $array_pos[1],1,0)
so bei mir kein endif nötig ^^
10/02/2016 23:11 Moneypulation#5
Quote:
Originally Posted by M3mphizzt View Post
soweit ich weiss kann er auch die mousclicks direkt hinter das then setzen dann brauch er kein endif geht zumindest bei mir immer
Code:
 if @error = 0 then MouseClick("left",$array_pos[0], $array_pos[1],1,0)
so bei mir kein endif nötig ^^
Wenn man nur eine Anweisung ausführen möchte, kann man das machen. Sobald aber ein Else-Zweig existiert, muss danach ein EndIf folgen.

Quote:
To create an infinite loop, you can use a non-zero number as the expression.
Laut AutoIt Wiki ist auch While 2 eine Endlosschleife. Daran liegts also nicht
10/03/2016 01:26 alpines#6
Wer seinen Code sorgfältig strukturiert und gut benennt findet seine Fehler schnell.
Ich weiß nicht ob du das hier einfach reingeklatscht hast oder ob du dir überhaupt Gedanken darüber machst, aber ich habe dir ausnahmsweise mal den Code sorgfältig strukturiert, gekürzt und das hinkommentiert was fehlte.
Code:
HotKeySet("{F1}","Start")
HotKeySet("{F5}","Stopp")

While Sleep(1000)
WEnd

Func Start()
	While Sleep(200)
		$aPosition = PixelSearch(809, 683, 967, 692, 0x7F271B, 10)

		If Not @error Then
			MouseClick("left", $aPosition[0], $aPosition[1], 1, 0)
		Else
			While Sleep(100)
				$aPosition = PixelSearch(270, 844, 349, 849, 0x311A09, 10)
				If Not @error Then MouseClick("left", $aPosition[0], $aPosition[1], 1, 0)
			WEnd
		;EndIf fehlt
	WEnd
EndFunc

Func Stopp()
	Exit
;EndFunc fehlt