Author Topic: Цикл повтора  (Read 62054 times)

0 Members and 2 Guests are viewing this topic.

Гринланд

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Цикл повтора
« on: December 27, 2012, 11:06:45 AM »
Скрипт очень простой, для автоматизации рабочего процесса. Все работает, но хочется оптимизировать код. Знаю что есть конкретная функция по повтору (циклу) части кода.


WAIT(2)
LCLICK(3074,962)  // запускает программу
WAIT(2)
LCLICK(2384,397)  // выбирает нужную закладку
WAIT(2)
LCLICK(2710,763)  // выбор дополнительной функции в программе, потом пауза в 10 сек что бы дождаться загрузки
WAIT(10)

и вот эту следующею часть кода нужно повторить 30-40 раз

DBLCLICK(2456,417)  // 0
WAIT(2)
LCLICK(2518,459)  // 0
WAIT(2)
LCLICK(2565,616)  // 0
WAIT(2)
LCLICK(2933,723)  // 0

я делаю просто повторяю - его нужно количества раз, хотя понимаю что есть более простой способ

ЦИТРИН

  • Супермодератор
  • Оплот сообщества
  • *
  • Posts: 484
  • Марафон опавших листьев, коктейль из дыма и мыслей
    • View Profile
Re: Цикл повтора
« Reply #1 on: December 27, 2012, 11:32:48 AM »
есть более простой способ
Если нет иных условий а есть простое повторение то   попробуй так  изменить свой скрипт
Code: (clickermann) [Select]
  WAIT(2)
LCLICK(3074,962)  // запускает программу
WAIT(2)
LCLICK(2384,397)  // выбирает нужную закладку
WAIT(2)
LCLICK(2710,763)  // выбор дополнительной функции в программе, потом пауза в 10 сек что бы дождаться загрузки
WAIT(10)

 

DEFINE($aaa,0) //  вводим переменную  для подсчета циклов

start:

DBLCLICK(2456,417)  // 0
WAIT(2)
LCLICK(2518,459)  // 0
WAIT(2)
LCLICK(2565,616)  // 0
WAIT(2)
LCLICK(2933,723)  // 0

INC ($aaa, 1) // после цикла переменная увеличивается на 1
IF($aaa = 30) // если счет циклов стал равен 30 , останавливаем выполнение скрипта
 HALT
END_IF
GOTO (start) // если счет циклов не равен 30,  возвращаемся к start: 
Бабочки полёт будит тихую поляну в солнечном свету...

Гринланд

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Цикл повтора
« Reply #2 on: December 27, 2012, 11:44:28 AM »
не много по синтаксису хочу спросить, часть кода:

Code: (clickermann) [Select]
DBLCLICK(2456,417)  // 0
WAIT(2)
LCLICK(2518,459)  // 0
WAIT(2)
LCLICK(2565,616)  // 0
WAIT(2)
LCLICK(2933,723)  // 0

будет работать так же как:

Code: (clickermann) [Select]
      DBLCLICK(2456,417)  // 0
            WAIT(2)

                                  LCLICK(2518,459)  // 0
        WAIT(2)
            LCLICK(2565,616)  // 0



WAIT(2)

LCLICK(2933,723)  // 0

я всегда переживаю, что бы не оставить в коде пустую строку или пробел в начале или конце команды, как кликер на это реагирует ??

ЦИТРИН

  • Супермодератор
  • Оплот сообщества
  • *
  • Posts: 484
  • Марафон опавших листьев, коктейль из дыма и мыслей
    • View Profile
Re: Цикл повтора
« Reply #3 on: December 27, 2012, 12:04:37 PM »
Никак не реагирует .
 Оставляй.
Там есть волшебная палочка в кликермане .
 Ею полезно сначала "причесать" скрипт,  а потом сохранить.
Бабочки полёт будит тихую поляну в солнечном свету...

Гринланд

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Цикл повтора
« Reply #4 on: December 27, 2012, 12:16:09 PM »
спасибо большое, "все гениальное - просто"

сейчас поэкспериментирую и разберусь как применять в дальнейшем

Гринланд

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Цикл повтора
« Reply #5 on: December 27, 2012, 01:06:25 PM »
для закрепления: что бы я не поместил между 3 и 9 строкой кода будет повторяться 30 раз??

Code: (clickermann) [Select]
DEFINE($aaa,0) //  вводим переменную  для подсчета циклов
 
start:
 



 
INC ($aaa, 1) // после цикла переменная увеличивается на 1
IF($aaa = 30) // если счет циклов стал равен 30 , останавливаем выполнение скрипта
 HALT
END_IF
GOTO (start) // если счет циклов не равен 30,  возвращаемся к start: 

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Цикл повтора
« Reply #6 on: December 27, 2012, 01:27:04 PM »
Так можешь писать, но лучше не пиши.
Циклы делают так:
Code: (clickermann) [Select]
WAIT(2)
LCLICK(3074,962)  // запускает программу
WAIT(2)
LCLICK(2384,397)  // выбирает нужную закладку
WAIT(2)
LCLICK(2710,763)  // выбор дополнительной функции в программе, потом пауза в 10 сек что бы дождаться загрузки
WAIT(10)

FOR ($i, $i<30)                   // твои 30 раз
   DBLCLICK(2456,417)  // 0
   WAIT(2)
   LCLICK(2518,459)  // 0
   WAIT(2)
   LCLICK(2565,616)  // 0
   WAIT(2)
   LCLICK(2933,723)  // 0
   WAIT(2)
END_CYC

// ну и так далее


ЦИТРИН

  • Супермодератор
  • Оплот сообщества
  • *
  • Posts: 484
  • Марафон опавших листьев, коктейль из дыма и мыслей
    • View Profile
Re: Цикл повтора
« Reply #7 on: December 27, 2012, 01:34:40 PM »
для закрепления: что бы я не поместил между 3 и 9 строкой кода будет повторяться 30 раз??
Да.
 А 30 или 130 раз,  это уже сам вписывай)
 В кликермане  есть такая функция , где даже можно по ходу сценария вписывать  нужные  параметры во всплывающем  окне.
[spoiler] INPUTBOX("message", "default", [delay]) - строковая функция; выводит диалоговое окно для ввода строки


Параметры
message - сообщение диалогового окна
default - значение по умолчанию
delay - необязательный параметр; таймаут


Пример

$str = inputbox("text", "hello")

print($str)



Примечания
Диалоговое окно висит delay секунд. Если за это время пользователь не начал ввод или не нажал одну из кнопок, то функция вернет строку по умолчанию. Если пользователь нажал отмену, то будет возвращена пустая строка
По умолчанию параметр delay равен 5
 [/spoiler]
 Если надо , можно пояснить как это сделать.
Бабочки полёт будит тихую поляну в солнечном свету...

Гринланд

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Цикл повтора
« Reply #8 on: December 27, 2012, 01:42:04 PM »
Так можешь писать, но лучше не пиши.
Циклы делают так:
Code: (clickermann) [Select]
WAIT(2)
LCLICK(3074,962)  // запускает программу
WAIT(2)
LCLICK(2384,397)  // выбирает нужную закладку
WAIT(2)
LCLICK(2710,763)  // выбор дополнительной функции в программе, потом пауза в 10 сек что бы дождаться загрузки
WAIT(10)

FOR ($i, $i<30)                   // твои 30 раз
   DBLCLICK(2456,417)  // 0
   WAIT(2)
   LCLICK(2518,459)  // 0
   WAIT(2)
   LCLICK(2565,616)  // 0
   WAIT(2)
   LCLICK(2933,723)  // 0
   WAIT(2)
END_CYC

// ну и так далее

этот вариант мне больше нравиться, он попроще ))) спасибки

Гринланд

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Цикл повтора
« Reply #9 on: December 27, 2012, 02:02:21 PM »
круто я с циклом сжал скрипт с 600 строк до 21  8)

Синичка

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Цикл повтора
« Reply #10 on: June 01, 2014, 01:42:07 PM »
Здравствуйте. Наконец нашла то, что меня интересовало.

Вопросы:
1. Получается, в примерах, которые выше, возьмем последний, после этого повторения 30 раз нужного кода, можно дальше писать в скрипте вторую часть, которую тоже можно повторить нужное количество раз? Тоже очень хочется сократить 40 тысяч строк до сотни)
2. Отдельный вопрос, есть у кликермана какой-то предел в количестве обрабатываемых строк? Ибо в 40 тысячах (ну примерно, вообще там еще больше было) он у меня не справлялся примерно с тысячей последних строк, просто работа прекращалась что ли. Несколько раз так было незакончено, и я забросила запускать такие большие по содержанию циклы.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Цикл повтора
« Reply #11 on: June 02, 2014, 08:36:43 AM »
Здравствуйте. Наконец нашла то, что меня интересовало.

Вопросы:
1. Получается, в примерах, которые выше, возьмем последний, после этого повторения 30 раз нужного кода, можно дальше писать в скрипте вторую часть, которую тоже можно повторить нужное количество раз? Тоже очень хочется сократить 40 тысяч строк до сотни)
2. Отдельный вопрос, есть у кликермана какой-то предел в количестве обрабатываемых строк? Ибо в 40 тысячах (ну примерно, вообще там еще больше было) он у меня не справлялся примерно с тысячей последних строк, просто работа прекращалась что ли. Несколько раз так было незакончено, и я забросила запускать такие большие по содержанию циклы.
Можно.
Лучше писать скрипт руками. Запись (а 40 тысяч строк это точно запись, причём махровая с движением мыши) работает нормально только на простых, непродолжительных скриптах. Любая задержка или неучтённое действие собьют работу.


aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: Цикл повтора
« Reply #12 on: June 02, 2014, 09:23:30 AM »
покажите мне рукописный код на 40к строк  :o
у меня пока самый большой 460(инклуд с сабами)+180(логика)=640 при том что в нем присутствуют циклы

Синичка

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Цикл повтора
« Reply #13 on: June 02, 2014, 11:38:23 AM »
Можно.
Лучше писать скрипт руками. Запись (а 40 тысяч строк это точно запись, причём махровая с движением мыши) работает нормально только на простых, непродолжительных скриптах. Любая задержка или неучтённое действие собьют работу.

От записи мышью я давно отказалась, слишком много ошибок при этом. Столько много строчек выходило из того, что переходя на одну страничку, мне там нужно было сделать, например, 500 одинаковых действий, а я не знала, как это урезать, поэтому просто вставляла 500 одинаковых действий , потом нужно было перейти на другую страничку, и уже там сделать, например, 185 одинаковых действий. И так штук 5 разных страниц. И это должен был быть один большой неповторяемый в дальнейшем цикл. Но теперь всё урегулируется)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Цикл повтора
« Reply #14 on: June 02, 2014, 11:45:05 AM »
От записи мышью я давно отказалась, слишком много ошибок при этом. Столько много строчек выходило из того, что переходя на одну страничку, мне там нужно было сделать, например, 500 одинаковых действий, а я не знала, как это урезать, поэтому просто вставляла 500 одинаковых действий , потом нужно было перейти на другую страничку, и уже там сделать, например, 185 одинаковых действий. И так штук 5 разных страниц. И это должен был быть один большой неповторяемый в дальнейшем цикл. Но теперь всё урегулируется)
:o :o :o