1

Тема: AHK: Перебор до успеха

Доброго времени суток.

Необходимо произвести перебор значений в функции. Смог реализовать только так:


simvolA:=11
simvolB:=22
simvolC:=33
simvolD:=44
simvolE:=55
simvolF:=66
simvolG:=77
simvolH:=21
simvolI:=54
simvolJ:=27
simvolK:=54
simvolL:=278
simvolM:=39
simvolN:=54
simvolO:=67
simvolP:=23
simvolQ:=988
simvolR:=6577
simvolS:=554
simvolT:=6464
simvolU:=55455
simvolV:=42
simvolW:=34
simvolX:=21
simvolY:=34
simvolZ:=12
simvol0:=214
simvol1:=578
simvol2:=99753
simvol3:=1233
simvol4:=323
simvol5:=4433
simvol6:=22
simvol7:=1
simvol8:=3433
simvol9:=6732
{




 if (ok:=FindText(651, 536, 696, 570, 0, 0, simvolA)) 
 {
msgbox, a
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvolb))
{
msgbox, b
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvolc))
{
msgbox, c
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvold))
{
msgbox, d
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvole))
{
msgbox, e
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvolf))
{
msgbox, f
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvolg))
{
msgbox, g
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvolh))
{
msgbox, h
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvoli))
{
msgbox, i
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvolj))
{
msgbox, j
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvolk))
{
msgbox, k
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvol0))
{
msgbox, 0
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvol1))
{
msgbox, 1
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvol2))
{
msgbox, 2
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvol3))
{
msgbox, 3
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvol4))
{
msgbox, 4
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvol5))
{
msgbox, 5
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvol6))
{
msgbox, 6
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvol7))
{
msgbox, 7
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvol8))
{
msgbox, 8
}
else if (ok:=FindText(651, 536, 696, 570, 0, 0, simvol9))
{
msgbox, 9
}

Далее идет некая функция, которая выполняется.
Суть в том, что это только один из вариант перебора из необходимых. Этих вариантов довольно много. Попытался реализовать через массив данных, однако не совсем получается это сделать.

Если попытаться сделать это через массив, то смог дойти только до такого варианта:



Numbers := []

Numbers.A:=11
Numbers.B:=22
Numbers.C:=33
Numbers.D:=44
Numbers.E:=55
Numbers.F:=66
Numbers.G:=77
Numbers.H:=21
Numbers.I:=54
Numbers.J:=27
Numbers.K:=54
Numbers.L:=278
Numbers.M:=39
Numbers.N:=54
Numbers.O:=67
Numbers.P:=23
Numbers.Q:=988
Numbers.R:=6577
Numbers.S:=554
Numbers.T:=6464
Numbers.U:=55455
Numbers.V:=42
Numbers.W:=34
Numbers.X:=21
Numbers.Y:=34
Numbers.Z:=12
Numbers.0:=214
Numbers.1:=578
Numbers.2:=99753
Numbers.3:=1233
Numbers.4:=323
Numbers.5:=4433
Numbers.6:=22
Numbers.7:=1
Numbers.8:=3433
Numbers.9:=6732

{

for index, element in Numbers
{
	MsgBox, % "Элемент номер: " index ", значение: " element
}
}

То есть, не совсем понимаю, каким образом можно указать перебор, в котором будет выполняться какое-либо условие при успешном выполнении функции.
Зарнее благодарю.

2

Re: AHK: Перебор до успеха

Возможно так:


for key, value in Numbers
{
    if (FindText(651, 536, 696, 570, 0, 0, value)) {
        MsgBox % key
        Break
    }
}

3

Re: AHK: Перебор до успеха

Taveron именно так и должно быть.
Большое спасибо!