Привет форумчане! Нужна ваша помощь.
Есть часть скрипта, которая проверяет значение под курсором (курсор не от мыши, а что бы было проще понять приложен скрин).
Цикл жмет клавишу вверх, пока не встретит указанную ранее дату (1я строка ждет дату).
Проблема состоит в том, что если перед выбранной датой больше никаких строк нет, то цикл так и продолжает жать клавишу вверх, а мне нужно сделать выход (alt+х) и продолжить работу.
Возможные варианты - сравнить значение строки на текущей итерации и на следующей, если 60 раз идет повторение, то выходить из цикла (если этим способом, то нужно сравнивать все 5 полей). Я пытался сделать этим способом, не вышло. Надеюсь на вашу помощь.
Значения полей:
P.S. Такой же выход нужен если указана текущая дата (т.к. проверку реализовал нажатием клавиши вниз, пока не встретится отличное число от указанного).
P.P.S. Строка 1 на скрине 00\00\0000 не всегда присутствует, а колонка * не учитывается.
Добавлено:
Пробовал объединить вытаскиваемые значения и сравнить их до перехода курсора и после. Но значения переменных не обновляются...
Добавлено:
Временное решение пока такое:
Тема пока открыта, думаю решение громоздкое и требует много "телодвижений", а значит и ресурсов.
Есть часть скрипта, которая проверяет значение под курсором (курсор не от мыши, а что бы было проще понять приложен скрин).
Цикл жмет клавишу вверх, пока не встретит указанную ранее дату (1я строка ждет дату).
Проблема состоит в том, что если перед выбранной датой больше никаких строк нет, то цикл так и продолжает жать клавишу вверх, а мне нужно сделать выход (alt+х) и продолжить работу.
Возможные варианты - сравнить значение строки на текущей итерации и на следующей, если 60 раз идет повторение, то выходить из цикла (если этим способом, то нужно сравнивать все 5 полей). Я пытался сделать этим способом, не вышло. Надеюсь на вашу помощь.
Значения полей:
Код:
ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:1]')
ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:2]')
ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:3]')
ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:4]')
ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:5]')
Код:
While Not WinActive('Папка звітів -',StringLeft($dd,2) & '\' & Stringmid($dd,4,2) & '\' & StringRight($dd,4))
Send('{UP}')
$view_date = GetWinText(1) ;Выбираем колонку с датой
If $view_date == '00\00\0000' Then ;Если указанного числа в печати нет, то наткнувшись на нулевую дату происходит выход из цикла
Send('!x')
Sleep(500)
WinWait('Оболонка середовища функціонування ІОЦ Мінпраці України', 'Допомога')
WinActivate('Оболонка середовища функціонування ІОЦ Мінпраці України', 'Допомога')
ExitLoop
Else ;Если указанного числа нет и нет нулевой даты, то выход из цикла используя проверку строк
;~ Действие
EndIf
WEnd
While WinActive('Папка звітів -',StringLeft($dd,2) & '\' & Stringmid($dd,4,2) & '\' & StringRight($dd,4))
Send('{UP}')
WEnd
Send('{DOWN}') ;Курсор устанавливается на первую запись указанной даты
Sleep(300)
While WinActive('Папка звітів -',StringLeft($dd,2) & '\' & Stringmid($dd,4,2) & '\' & StringRight($dd,4)) ;Жать стрелку вниз, пока строка равна указанной дате
Send('{DOWN}')
P.S. Такой же выход нужен если указана текущая дата (т.к. проверку реализовал нажатием клавиши вниз, пока не встретится отличное число от указанного).
P.P.S. Строка 1 на скрине 00\00\0000 не всегда присутствует, а колонка * не учитывается.
Добавлено:
Сообщение автоматически объединено:
Пробовал объединить вытаскиваемые значения и сравнить их до перехода курсора и после. Но значения переменных не обновляются...
Код:
While Not WinActive('Папка звітів -',StringLeft($dd,2) & '\' & Stringmid($dd,4,2) & '\' & StringRight($dd,4))
$str_verify1 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:1]')
$str_verify2 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:2]')
$str_verify3 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:3]')
$str_verify4 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:4]')
$str_verify5 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:5]')
$str = $str_verify1 & ' ' & $str_verify2 & ' ' & $str_verify3 & ' ' & $str_verify4 & ' ' & $str_verify5
Send('{UP}')
$str_verify = $str_verify1 & ' ' & $str_verify2 & ' ' & $str_verify3 & ' ' & $str_verify4 & ' ' & $str_verify5
MsgBox(0,'','$str1 = ' & $str & @CRLF & '$str2 = ' & $str_verify)
If $str = $str_verify Then ;Если указанного числа нет и нет нулевой даты, то выход из цикла используя проверку строк
$counter+=1
Else
$counter = 0
EndIf
If $counter == '10' Then
MsgBox(0,'','Превышено значение 10')
Exit
EndIf
Добавлено:
Сообщение автоматически объединено:
Временное решение пока такое:
Код:
$str_verify1 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:1]')
$str_verify2 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:2]')
$str_verify3 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:3]')
$str_verify4 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:4]')
$str_verify5 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:5]')
$str = $str_verify1 & ' ' & $str_verify2 & ' ' & $str_verify3 & ' ' & $str_verify4 & ' ' & $str_verify5
Send('{UP}')
$str_verify1 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:1]')
$str_verify2 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:2]')
$str_verify3 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:3]')
$str_verify4 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:4]')
$str_verify5 = ControlGetText('Папка звітів -','','[CLASS:Edit; INSTANCE:5]')
$str_verify = $str_verify1 & ' ' & $str_verify2 & ' ' & $str_verify3 & ' ' & $str_verify4 & ' ' & $str_verify5
MsgBox(0,'','$str1 = ' & $str & @CRLF & '$str2 = ' & $str_verify)
Далее сравнение переменных...
Тема пока открыта, думаю решение громоздкое и требует много "телодвижений", а значит и ресурсов.