Author Topic: функция выполняется один раз  (Read 2229 times)

0 Members and 1 Guest are viewing this topic.

andrace

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
функция выполняется один раз
« on: December 11, 2014, 10:47:01 AM »
Всем привет, помогите пожалуйста.
Прив выполнении программы, функции вызываются всего один раз, но необходимо чтобы вызывалась каждый раз по окончанию цикла, но она там почему-то не вызывается.

один раз вызвалась, отработала
отработал цикл
отработал цикл
отработал цикл.... и так постоянно.

А теперь внимание вопрос!!! Почему?!!

Вот такая программулина :
Code: (clickermann) [Select]
DEFINE ($lab,      3914570544)
sub(cond)
   wndstate( wndfind("BlueStacks App Player"), 1)
   wndpos( wndfind("BlueStacks App Player"), 0, 0)
   $w = 0
   chk:
   GETSCREEN
   $islab = PXLCRC (306, 107, 500, 133)
   IF($islab ! $lab)
      $w= $w + 1
      if($w < 5)
         wait(1)
         logwrite("Задержка ", $w, " сек.")
         goto(chk)
      else
         logwrite("Не открыта нужная вкладка.")
         halt
      end_if
   END_IF
end_sub

start:

sub(find)
   $x1 = 115
   $y1 = 228
   $x2 = 205
   $y2 = 309
   GETSCREEN
   FOR($a, $a < 4)
      LOGWRITE ("find" $a )
      IF_PIXEL_IN ($x1,$y1, $x2, $y2, 7471103,16776960,7935,45311,16777215,63855)
         lclick($_return1, $_return2)
         WAITMS(100)
         lclick($_return1+160, $_return2+220)
         WAITMS(800)
         lclick(21,279)
         WAITMS(500)
         lclick(21,279)
      END_IF
      $x1 = $x1 + 150
      $x2 = $x2 +150
   END_CYC   
end_sub

cond()
LOGCLEAR

find()

//$var = 1

//while($var < 5)
// logwrite("var: ", $var)
// find()
// inc($var)
//end_cyc

for($var=0, $var < 6, 1 )
   
   lclick( 1194, 734 )
   WAIT(3)
   
   LOGWRITE ("clicked [compose] " $var )
   lclick(21,279)
   WAIT(1)
   lclick(21,279)
END_CYC

getscreen
find()

goto(start)
« Last Edit: December 11, 2014, 11:14:51 AM by Vint »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: функция выполняется один раз
« Reply #1 on: December 11, 2014, 11:24:12 AM »
Строки
Code: (clickermann) [Select]
start:
goto(start)
лишние.
Так же лишний последний getscreen, который перед find()

Вот здесь:
Code: (clickermann) [Select]
FOR($a, $a < 4)ты не задаёшь нигде начальное $a и после отработки цикла один раз, $a=4 и цикл больше никогда не заработает.
Пиши так:
Code: (clickermann) [Select]
FOR($a=0, $a < 4)
Ну и на закуску нет запятых
LOGWRITE ("find", $a )
LOGWRITE ("clicked [compose], " $var )


andrace

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: функция выполняется один раз
« Reply #2 on: December 11, 2014, 05:18:29 PM »
Да спасибо, действительно присвоение между глаз попало ))).
По поводу догонки и так выводит, запятая необязательна, как показала практика

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: функция выполняется один раз
« Reply #3 on: December 11, 2014, 06:08:42 PM »
Да спасибо, действительно присвоение между глаз попало ))).
По поводу догонки и так выводит, запятая необязательна, как показала практика

Тебе указали на ошибку, не нужно писать "И так работает" "и так выводит". Есть синтаксис и не стоит его нарушать.