Variable subscript badly formatted - Fehlersuche

04/18/2017 09:49 O-Drop#1
Hallo allerseits,

Ich bekomme selten aber Konstant diesen Fehler in einem WIP FastFind.au3 Pixelsearch Bot und kann den Fehler einfach nicht finden:
Code:
>"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\its\bot.au3"    
"C:\its\bot.au3" (233) : ==> Variable subscript badly formatted.:
if _searchPix11($aPixel[$i][0], $aPixel[$i][1],$handle) = $aPixel[$i][2] And _searchPix11 ($aPixel[$i-1][0], $aPixel[$i-1][1],$handle) = $aPixel[$i-1][2] then
if _searchPix11($aPixel[$i][0], $aPixel[$i][1],$handle) = $aPixel[$i][2] And _searchPix11 ($aPixel[^ ERROR
>Exit code: 1    Time: 447.9
_searchpix11 Funktion:
Code:
Func _searchPix11 ($x,$y,$searchhandle)
   FFSnapShot(0,0,0,0)
   Sleep (10)
   global $color=FFGetPixel($x, $y)
   Return $color
EndFunc
Code der Schleife:
Code:
While WinExists ("mein fenster") or WinExists ("mein fenster")
   FFSnapShot(0,0,0,0)
   ;Fängt bei NULL an !!! Zählt bis Max-1
   Global $aPixel[104][3] =[[915, 160, 0xCA3E61], [983, 139, 0xFF595A], [933, 177, 0xAB3051], [1017,167, 0xFE4D59], [933,177, 0x181810],[1150,35, 0xBD4563], [1132,333, 0x453333], [378,105, 0xF4D491], [914,193, 0xB23557], [998,176, 0xF3434C],[707,204, 0x473434], [1630,866, 0x9C3CAD], [889,180, 0x9E2644], [973,157, 0xEF464D], [775,428, 0x4B3632],[1208,96, 0xAD3851], [1280,67, 0xF94D54], [1214,83, 0xA22D48], [1279,67, 0xF45C5E], [990,132, 0x822040],[1035,133, 0xF84C55], [1259,77, 0xB13D5E], [934,173, 0xB53157], [1005,146, 0xF2545A], [891,171, 0xB12E54],[969,156, 0xFC5159], [938,173, 0xB03B5C], [1012,159, 0xF64C57], [956,168, 0xB6395B],[1031,149, 0xF1434D],[872,186, 0xBD4163], [946,167, 0xE1494C], [919,163, 0xB13958], [986,157, 0xEC4A52], [964,132, 0xA22D4F],[1028,140, 0xFB4951], [413,172,0xA22D4F], [472,174, 0xF16767], [948,105, 0x862644], [1006,123, 0xEC4A52], [957,186, 0xBB3F61], [1030,161, 0xF8364C], [666,270, 0x443333], [1587,929, 0x9C3CAD], [1046,153, 0xBD4062], [1106,134, 0xE1474C],[730, 189, 0xFFFFFF], [936, 186, 0xFFFFFF],[811, 149, 0x272021], [876, 137, 0xC49457],[975, 250, 0xBB4267], [1051, 241, 0xD44B4A],[1311, 983, 0x993BAA], [874, 22, 0x6B284D], [917, 21, 0x6D294E], [991,19, 0xA4343B], [1011, 39, 0xCD476A], [1108,25, 0xFA494F], [785, 32, 0xB43759], [873,21, 0xE7424F], [1228, 88, 0xA32C44], [1316,83, 0xEB3B46], [1070, 737, 0xBD9284], [1202,828, 0xFFC321], [467, 56, 0xF3D290], [1173,227, 0x443332], [462, 356, 0x251E21], [1092,52, 0x4F493F], [958, 147, 0xAC3051], [1034,157, 0xEE424F], [936, 193, 0xCA3E61], [1016,189, 0xF54854], [974, 177, 0xA02945], [1059,169, 0xF84955], [995, 55, 0xC04263], [1082,35, 0xFD494F], [1318, 411, 0xB03B55], [381,202, 0x926A3A], [1067, 61, 0xBF3C60], [1139,58, 0xF64B59], [812, 361, 0x271F21], [1332,688, 0xDAC3AA], [193, 757, 0x231E11], [121,505, 0x4E4E2B], [995, 573, 0xDEBF9F], [526,221, 0x2A2120], [1060, 98, 0xAF3354], [1146,75, 0xF3454E], [1404, 442, 0xBE3C5E], [1464,414, 0xFA6068], [1085, 94, 0xBF3D5E], [1157,87, 0xEF4551], [1140, 66, 0xCE4163], [1235,61, 0xCE3F3A], [292, 251, 0x292021], [962,612, 0x95A23F], [299, 192, 0x47464B], [464,65, 0xD1934B], [671, 166, 0x292123], [1106,618, 0x845942], [986, 120, 0xA42F51], [1070, 120, 0xF3E598], [906, 106, 0x862544], [	973, 140, 0xF34450]]
   Sleep(100)
   If $i=0 Then
	  $i=UBound($aPixel)
   EndIf
   $i=$i-1
   if _searchPix11($aPixel[$i][0], $aPixel[$i][1],$handle) = $aPixel[$i][2] And _searchPix11 ($aPixel[$i-1][0], $aPixel[$i-1][1],$handle) = $aPixel[$i-1][2] then ; Wenn die Pixel aus der Liste $sPixel übereinstimme. Dann:
	  While 1
		 MsgBox (0,"Posi",$i&"  "&$i-1&"         "&$aPixel[$i][0]&$aPixel[$i][1]&$aPixel[$i][2]&"              "&$aPixel[$i-1][0]&$aPixel[$i-1][1]&$aPixel[$i-1][2],2) ;debugbox
		 ;
		 ;
		 ;
		 ;Weiterer if endif code.
		 ;
		 ;
		 if _searchPix11 (377,83,$handle) = 0x4F484F And _searchPix11 (1570,122,$handle) = 0x3F4358 or 0x39333F Then
			ExitLoop
		 EndIf
	  WEnd
   EndIf
   ;
   ;
   ;weitere für das Problem unwichtiger code
   ;
   ;
WEnd
Sonst funktioniert alles super. Nach einem Neustart gehts wie gewohnt über Stunden weiter.
Ich vermute es hat etwas mit der i schleife zu tun, es hatte allerdings einen Grund, dass ich die Schleife manuell einrichten musste. Ich weiß es nichtmehr genau aber es ging nicht anders.

Direkt dazu: Ich habe den großteil meines Codes in einer While 1 Schleife und relativ wenig in Funktionen ausgelagert. Direkt nach der While Schleife, habe ich eine weitere für späteren Code. Auch ganz selten, aber es passiert rutscht die Ausführung in die zweite Schleife. Dann stürzt das Script natürlich ab, weil die Funktionen nicht existieren. Woran kann das liegen? Ich habe keinerlei relevantes Exitloop oder ähnliches (Zumindest bin ich mir sehr sicher) in der Schleife.
EDIT: Ahh habe das problem gefunden weshalb die schleife verlassen wird. alles gut :D Lösung war meine eigene Dummheit. Es ist keine While 1 Schleife sondern eine while winexists Schleife, habs tausend mal überlesen.
04/18/2017 11:12 Devsome#2
@O-Drop magst du die Lösung hier auch noch posten, falls einige später auch mal so ein ähnliches Problem bekommen