Что нового

Организация циклов и счетчик

Maximill

Новичок
Сообщения
16
Репутация
0
Приветствую! Помогите пожалуйста опытом, организовать цикл со счетчиком.
Автоматизирую экспорт данных из программы в текстовый файл. Принцип работы следующий: в рабочей программе есть форма (строки наподобие Excel), курсор по координатам выбирает строчку которую нужно экспортировать, вызывает диалоговое окно, вводит номер файла (например "1.txt") сохраняет (клик на кнопку Save). Далее выбирает следующую строчку и так до конца. Курсор перемещается по координатам.
Сейчас решил написать простенький цикл, который работает в ручном порядке, без лишних изяществ: отображение номера строки и автоматизации поиска номера последней строки. Но уперся в недостаток знаний, как прописать счетчик N+1 для увеличения значений нумерации файлов и N+20 для увеличения координаты строки с выбором данных для экспорта.
Привожу алгоритм работы программы (см. схему):
1.Изначально выбрана строка №1, поэтому переходим к диалоговому окну для экспорта данных.
2. Вводим номер файла - "1".
Добавляется условие, из-за особенности программы. Чтобы перейти на строку ниже, нужно сделать двойной клик по строке №1 чтобы снять выделение. Для остальных строк №2 и более нужен всего один клик для снятия выделения.
3.1 Если номер файла <2, тогда дважды снимаем выделение со строки №1 (X=100; Y=100) И переходим к строке №2, координата Y=100+20
3.2 Если номер файла >=2, тогда переходим на следующую строку (№3), координата Y=100+20*2
4. Продолжить выполнение программы? Запрос нужен для того, чтобы не произошло пустого срабатывания, так как количество строк не фиксировано, и программа не умеет определять последнюю строчку.
Может быть, алгоритм можно как-то оптимизировать, прошу помощи специалистов, подскажите пример или скелет кода, и я сам попытаюсь разобраться со счетчиком.
Мой набросок код, и он без циклов:
Код:
Func Save()
 ;Код открытия окна и сохранение файла №1
MouseClick( "left",385,26,1,2)
Sleep(500)
MouseClick( "left",385,200,1,2)
Sleep(500)
MouseClick( "left",345,110,2,2)
Sleep(500)
;Переместить к окну ввода №
MouseClick( "left",503,403,1,2)
Sleep(500)
;Ввести № файла
Send("1")
;Save
MouseClick( "left",745,400,1,2)
Sleep(500)   
EndFunc

;Код открытия окна и сохранение файла №2
MouseClick( "left",385,26,1,2)
Sleep(500)
MouseClick( "left",385,200,1,2)
Sleep(500)
MouseClick( "left",345,110,2,2)
Sleep(500)
;Переместить к окну ввода №
MouseClick( "left",503,403,1,2)
Sleep(500)
;Ввести № файла
Send("1")
;Save
MouseClick( "left",745,400,1,2)
Sleep(500)
;Перейти к строке №1 и снять два выделения
MouseClick( "left",115,572,2,2)
Sleep(500)
;Выделить строку №2
MouseClick( "left",115,596,1,2)
Sleep(500)
;Код открытия окна и сохранение файла №2
; Тут цикл до 5, где N+1
Save()
 

Вложения

  • Снимок экрана 2023-03-30 164800.jpg
    Снимок экрана 2023-03-30 164800.jpg
    22.4 КБ · Просмотры: 14

mrsoros

Новичок
Сообщения
24
Репутация
0
Привет. Из какой программы надо экспортировать? Не проще обратиться к базе, с которой работает эта программа, и взять данные напрямую из базы минуя взаимодействие с интерфейсом этой программы?
 

Eugen_pcad_ru

Новичок
Сообщения
9
Репутация
0
Если программа позволяет из себя скопировать, то не проще лис помощью CTRL выделить все данные и скопипастить их (например, в csv). А дальше уже с ним работать? В любом случае построчное такое себе, лучше весь фрагмент зацепить и потом разделить.
 
Верх