Что нового

Обработка ошибок

lightforever

Новичок
Сообщения
37
Репутация
2
Похоже туплю, но всё таки: не нашёл в мануале про обработку ошибок. Может кто-нибудь кинет ссылочки? Буду очень признателен
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Ошибок каких?
 
Автор
L

lightforever

Новичок
Сообщения
37
Репутация
2
Yashied сказал(а):
Subscript used with non-Array variable.
Вобщем код такой:
$windows=WinList("[REGEXPTITLE:^\w+\s*\w*,]")

If $windows[0][0] Then ;обходим все окна
For $j=1 to $windows[0][0]
$WPos=WinGetPos($windows[$j][0] )

For $i=0 to 5 ; обходим все позиции и устанавливаем: находится ли окно на должной позиции
If Not @error Then
If Abs($WPos[0] - $Must_pos[$i][0])<20 And
Abs($WPos[1] - $Must_pos[$i][1])<20 Then $has=True
EndIf
Next
....

Пишет вот на этой строке: If Abs($WPos[0] - $Must_pos[$i][0])<20 And Abs($WPos[1] - $Must_pos[$i][1])<20 Then $has=True
If Abs($WPos^ ERROR

Вроде не должно быть такой ошибки по идее же?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
lightforever
Оформляй код в тэг [autoit][/autoit]
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Замени :
lightforever [?]
If Abs($WPos[0] - $Must_pos[$i][0])<20 And
Abs($WPos[1] - $Must_pos[$i][1])<20 Then $has=True
EndIf
на :
Код:
If Abs($WPos[0] - $Must_pos[$i][0])<20 And Abs($WPos[1] - $Must_pos[$i][1])<20 Then $has=True


В конструкции условного выражения перечисление условий (And ... ) выполняется на одной строке .
Если результатом выполнения условий является только одна операция : $has=True ,
то все условное выражение можно выполнить на одной строке : If ... And ... Then $has=True .
При этом оператор EndIF не требуется
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
If $windows[0][0] Then
	For $j = 1 To $windows[0][0]
		$WPos = WinGetPos($windows[$j][1])
		If Not @error Then
			For $i = 0 To 5
				If Abs($WPos[0] - $Must_pos[$i][0]) < 20 And Abs($WPos[1] - $Must_pos[$i][1]) < 20 Then
					$has = True
				EndIf
			Next
		EndIf
	Next
EndIf
 
Автор
L

lightforever

Новичок
Сообщения
37
Репутация
2
Ага, спасибо. Хотя странно, что раньше не работало, т.к. название было полным
 
Верх