Author Topic: Что возвращает inputbox?  (Read 4824 times)

0 Members and 1 Guest are viewing this topic.

Zets

  • Освоившийся
  • **
  • Posts: 66
    • View Profile
    • vk.com
Что возвращает inputbox?
« on: February 21, 2014, 06:24:00 PM »
Я наверно всех уже достал, но сам не могу справится..
Для упрощения работы постороннего человека со скриптом создал режим диалога:
Code: (clickermann) [Select]
SCREENSHOTEX($_return1-3,$_return2+29, $_return1+36,$_return2+50, "label", 0)
$j1 = inputbox("Введите номер страницы в горизонтальной строке страниц $j1", "0")
WAIT(1)
$k1 = inputbox("Введите номер горизонтальной строки $k1", "0")

Но в работе скрипта выскакивает ошибка интерпритации LCLICK($XXX,$YYY)
Ошибка эта появляется тут
Code: (clickermann) [Select]
Sub(click1)
   LCLICK($XXX,$YYY)
   WaitMs(100)
End_Sub

Координаты получает отсюда:
Code: (clickermann) [Select]
// - Функция проверки загрузки страницы листов
sub(CHECK2)
   WHILE($d1 = 1)
      WAITMS($T)
      GETSCREEN
      If_Picture_In($KZX0,1,$KZX0+978,$_ymax, "textures\CHECK2.bmp")
         $d1 = 5
      END_IF
   END_CYC
   $d1 = 1
End_Sub
// - Функция поиска страницы №1
sub(CHECK3)
   WHILE($d1 = 1)
      GETSCREEN
      If_PIXEL_IN($KZX0,$KVLY0,$KZX0+978,$_ymax, 3616552)
         $KZX2 = $_return1
         $KZY2 = $_return2
         $d1 = 5
      END_IF
   END_CYC
   $d1 = 1
End_Sub

// == Копирование данных из 20ти строк страницы ==
SUB(COPY1)
   FOR ($i1, $i1 < 19)
      CHECK2()
      CHECK3()
      $XX1 = $KVLX0
      $YY1 = $YYYY0
      $XXX = $KZX2+$KZZ2*($j1)+6
      $YYY = $KZY2+$ZZ1
  LogWrite("координата строки ", $XXX ,",", $YYY)
      click1()
      LogWrite("Перешел на страницу: "$j1)
      IF($j1>0) & ($k1<1)
         CHECK5()
      END_IF
      CHECK2()
      GETSCREEN
      If_PIXEL_IN($XX1,$YY1,$KNPX0,$KNPY0, 13948116)
         $XXX = $_return1+25
         $YYY = $_return2
         LogWrite("координата пикселя ", $_return1 ,",", $_return2)
         LogWrite("координата строки ", $XXX ,",", $YYY)
         click1()
         $YYYY0 = $_return2+20
         LogWrite("Зашел в строку: "$i1)
         CHECK4()
         IF($SCR=1)
            SCREENSHOT("строка")
         END_IF
         DataCopy()
         $XXX = $KZX1+200
         $YYY = $KZY1+3
         click1()
      ELSE
         HintPopup("Не найден квадратик")
         LogWrite("Не найден квадратик! в строке"$i1)
         HALT
      END_IF
   END_CYC
END_SUB

CHECK2 и CHECK3 проходят. А координаты для клика выдает: координата строки 502+26*("1")+6,952
Т.е. введенное значение он как будто не понимает как число.
Как преобразовать строку в число что ли?

Zets

  • Освоившийся
  • **
  • Posts: 66
    • View Profile
    • vk.com
Re: Что возвращает inputbox?
« Reply #1 on: February 21, 2014, 06:35:29 PM »
кажется решил проблему как то так:
Code: (clickermann) [Select]
$jj1 = inputbox("Введите номер страницы в горизонтальной строке страниц $j1", "0")
$j1 = int($jj1)
print($j1)
WAIT(1)
$kk1 = inputbox("Введите номер горизонтальной строки $k1", "0")
$k1 = int($kk1)
print($k1)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Что возвращает inputbox?
« Reply #2 on: February 21, 2014, 07:02:21 PM »
Молодец, правильно понял. inputbox возвращает строку а нам нужны числа.

Только можно проще

Code: (clickermann) [Select]
$j1 = int(inputbox("Введите номер страницы в горизонтальной строке страниц $j1", "0"))
print($j1)
WAIT(1)
$k1 = int(inputbox("Введите номер горизонтальной строки $k1", "0"))
print($k1)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Что возвращает inputbox?
« Reply #3 on: February 21, 2014, 07:09:02 PM »
Не верно!
Code: (clickermann) [Select]
IF($j1>0) & ($k1<1)Нужно так
Code: (clickermann) [Select]
IF(($j1>0) & ($k1<1))

Zets

  • Освоившийся
  • **
  • Posts: 66
    • View Profile
    • vk.com
Re: Что возвращает inputbox?
« Reply #4 on: February 21, 2014, 10:31:50 PM »
Только можно проще
Я что то побоялся такой навороченной конструкции))

Не верно!

Что интересно работало, даже не смотря на то что надо было ИЛИ))))
Сейчас так выглядит
Code: (clickermann) [Select]
IF(($j1>0) | ($k1<1))
         CHECK5()
      END_IF

Крис Тинка

  • Активный участник
  • ***
  • Posts: 171
    • View Profile
Re: Что возвращает inputbox?
« Reply #5 on: February 22, 2014, 06:09:01 AM »
Что интересно работало, даже не смотря на то что надо было ИЛИ))))
Работало, потому что проверялось только первое неравенство.
Еще можно так написать,  чтобы не городить много скобок
Code: (clickermann) [Select]
IF($j1 > 0 | $k1 < 1)

Zets

  • Освоившийся
  • **
  • Posts: 66
    • View Profile
    • vk.com
Re: Что возвращает inputbox?
« Reply #6 on: February 22, 2014, 03:22:28 PM »
Спс))