1 (изменено: lost, 2021-09-21 13:21:57)

Тема: AHK: Как сравнивать шестнадцатеричные числа?


white := 0xFFFFFF
			Loop
			{
				PixelGetColor color, 78, 347, RGB
				ToolTip %color%
				if color == white
					break
				Sleep 200
			{

Цикл не прерывается. Как правильно сравнивать 16-ричные числа? Так

if color = white

и так

0xffffff

пробовал. Цикл прерывается только если явно указать цвет

if color == 0xFFFFFF

, но нужно через переменную.

2

Re: AHK: Как сравнивать шестнадцатеричные числа?

F5::
White = 0xFFFFFF
Loop
{
 MouseGetPos, X,Y
 PixelGetColor, Color, X, Y, RGB
 If (Color = White){
  ToolTip, % "Цвет найден: " Color
  Break
 }
 Else
  ToolTip, % "Цвет: " Color
 Sleep 200
}
Return
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK: Как сравнивать шестнадцатеричные числа?

__Михаил__ Заключил в скобки выражение после if и сработало. Спасибо! Знали бы вы сколько часов я на это угробил. А в чем разница между

if (color=white)

и

if color = white

? От греха подальше поставил везде скобки после if, но в других местах считается все неверно. Непонятно

4

Re: AHK: Как сравнивать шестнадцатеричные числа?

Когда-то тоже столкнулся с этой странностью. С тех пор всегда использую скобки.

5

Re: AHK: Как сравнивать шестнадцатеричные числа?

Если внимательно прочитаете документацию по If (Expression), все вопросы должны проясниться.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Как сравнивать шестнадцатеричные числа?

Если просто и понятный языком: скобки указывают, что внутри нужно преобразовать переменные в их значения а не использовать как строки.
Правда есть исключения когда это можно не делать. Я взял за правило использовать строки, ошибки перестали появляться.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101