Тема: AHK: Переменные внутри функций и условий
Здравствуйте!
Столкнулся с такой проблемой, решив сжать длинный код в маленький Loop с привязкой A_Index.
Проблема заключается в следующем..
есть участок кода:
SS1 = 1200
SS2 = 2700
SS3 = 5400
a1 = "пирог"
a2 = "пицца"
a3 = "кабан"
sc48::
Loop, 3
{
Last_found :=
sleep, 20
FileEncoding, UTF-8
Loop, read, C:\list.log, ; Ищем последнею найденную строку
{
if InStr(A_LoopReadLine, a%A_Index%) ; здесь попытался использовать A_Index, чтобы перечислить переменные a1,a2 и a3
Last_found := A_LoopReadLine ; нахожу последнее найденное значение
}
sleep, 20
b%A_index% := Last_found ; здесь нужно, чтобы переменные b1,b2 и b3 пометились найденными значениями, с помощью того же b%A_index%
sleep, 20
if b%A_index% != ; здесь идёт проверка b1, b2, b3 на наличии найденных слов, если что-то нашло то открывает действие
{
msgbox, b%A_index% найден
}
Else
{
msgbox, b%A_index% не найден
}
b%A_index% := SubStr(b%A_index%, 2, 8) ; далее идёт поиск, в найденных строчках, время и отделение его от текста
RegExMatch(b%A_index%, "^(..):(..):(..)$", t)
HH1 := t1
MM1 := t2
SS1 := t3
HH1 *= 60
HH1 *= 60
MM1 *= 60
S%A_index% := HH1 + MM1 ; здесь сохраняется значение для функции, имея следующие названия: S1, S2, S3
S%A_index% += SS%A_index% ; S1,S2,S3 здесь прибавляют к себе значение, которые приготовлены, заранее, сверху. Пример S1 += SS1
b%A_index%(S%A_index%) ; здесь я пытаюсь вызвать функцию и мне выскакивает ошибка, хочу чтобы тут менялось b1(s1), b2(s2), b3(s3)
{
time := 19990101 ; *Midnight* of an arbitrary date.
time += SS1, seconds
FormatTime, mmss, %time%, mm:ss
return S%A_index%//3600 ":" mmss
}
}
Вопрос вот в чём:
Объясните, пожалуйста, чайнику, как правильно вызвать функцию через A_Index в этой строчке
b%A_index%(S%A_index%)
Не хочу прописывать эту функцию 3 раза в следующем ключе:
b1(S1)
{
time := 19990101 ; *Midnight* of an arbitrary date.
time += SS1, seconds
FormatTime, mmss, %time%, mm:ss
return S%A_index%//3600 ":" mmss
}
b2(S2)
{
time := 19990101 ; *Midnight* of an arbitrary date.
time += SS1, seconds
FormatTime, mmss, %time%, mm:ss
return S%A_index%//3600 ":" mmss
}
b3(S3)
{
time := 19990101 ; *Midnight* of an arbitrary date.
time += SS1, seconds
FormatTime, mmss, %time%, mm:ss
return S%A_index%//3600 ":" mmss
}