Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - ee33e

Pages: [1]
1
Общие вопросы / Re: Две переменные
« on: December 22, 2016, 10:00:49 PM »
Ребята! Вот такой вопрос родился сейчас, как можно после выполнения вышеописанного цикла, снова запустить такой же, только присвоить переменным другие значения, или вообще другие переменные взять, и шаг изменить и рандом? Не догоняю)))


Иии самое главное, чтобы рандомное число при выполнении следующего цикла, не учитывалось!
Вот прошел один цикл:

 $a = $a + 0.08 + RND(0, -4)/1000

$а стала 1,008+ рнд(0,004)=1,012

WHILE($a < 5.6) - ещё действует условие, и в следующем цикле

$а уже =1,012+рандом, а мне надо чтобы было =1,008+рандом

т.е. шаг $a был бы всегда один при новом цикле, а к нему прибавлялся рандом в каждом цикле отдельно без последствий так сказать!))  а то сильно в сторону точки уходят иногда))

Может все просто, убрать рандом из формулы и добавить его в KEYSTRING($a + RND(4, -4)/1000, 100) ?? так будет работать правильно? Вроде правильно))

2
ОООо друзья мои!!! Я стал мегамозг только что в чьем-то представлении, конечно с вашей огромной помощь!
Код корявый (мой уровень)), это как костыли к иномарке))) но блин сам допилил, даже результат уже не важен, главное работает!))
Пришлось разбить на 9 строк, и там надо было сократить количество номеров, ещё вместо pagedown вставил прокрутку три раза, тогда каждая "страница" начиналась с нового номера, как предполагается программой, да и в экселе прокрутка с помощью клавиши pagedown так же работает, а в этой программе все не так))) Ещё и страницы сами не возвращаются, пришлось добавить 11 раз pageup, чтобы, при условии самого последнего номера из списка, вернуться в начало! и все пошло! Задержки до минимума сейчас проверю и можно уходить с коллегой чай с тортом пить или что там у нее)))))

Oraven, твой код супер, но надо долго вникать, чего поздним вечером уже не сделаешь((
Но обязательно опробую и его!, получается картинки я свои любого размера могу заменить, без разницы?

Вот сам код, точнее измененная его часть по перелистыванию списка, если кому интересно, и кто хочет подсказать какими командами можно это дело укоротить, готовьтесь:))))
Code: (clickermann) [Select]
   $num = INT(FROMCLIP())   // число из буфера
   get_index($num)
   IF($index ! -1)
   LCLICK(321,233)   // открываем выпадающий список - поставлены координаты
   WAITMS(500)
   MOVE(509,293)
   WAITMS(200)

KEYDOWN(#PAGEUP)   
   WAITMS(10)
   KEYUP(#PAGEUP)
   WAITMS(10)
KEYDOWN(#PAGEUP)   
   WAITMS(10)
   KEYUP(#PAGEUP)
   WAITMS(10)
KEYDOWN(#PAGEUP)   
   WAITMS(10)
   KEYUP(#PAGEUP)
   WAITMS(10)
KEYDOWN(#PAGEUP)   
   WAITMS(10)
   KEYUP(#PAGEUP)
   WAITMS(10)
KEYDOWN(#PAGEUP)   
   WAITMS(10)
   KEYUP(#PAGEUP)
   WAITMS(10)
KEYDOWN(#PAGEUP)   
   WAITMS(10)
   KEYUP(#PAGEUP)
   WAITMS(10)
KEYDOWN(#PAGEUP)   
   WAITMS(10)
   KEYUP(#PAGEUP)
   WAITMS(10)
KEYDOWN(#PAGEUP)   
   WAITMS(10)
   KEYUP(#PAGEUP)
   WAITMS(10)
KEYDOWN(#PAGEUP)   
   WAITMS(10)
   KEYUP(#PAGEUP)
   WAITMS(10)
KEYDOWN(#PAGEUP)   
   WAITMS(10)
   KEYUP(#PAGEUP)
   WAITMS(10)
KEYDOWN(#PAGEUP)   
   WAITMS(10)
   KEYUP(#PAGEUP)
   WAITMS(10)


      $page = INT($index / 9)     
      FOR($p=0, $p < $page)
         WHEELDOWN                 // перелистываем страницу $page раз
         WAITMS(100)
         WHEELDOWN
         WAITMS(100)
WHEELDOWN 
         WAITMS(300)
      END_CYC
 
     $loc_index = $index - ($page * 9)     

3
Вот умница, Oraven, переключается все здорово! Большущее спасибо!))

Осталось меню(

Получается при превышении 37 строк автоматически переходит на другую "страницу" (нажимает pagedown)? так? значит при превышении 37 строки нужно дополнительно нажать pagedown, но как это добавить в код не знаю!(

где-то тут я догадываюсь)))
 
Code: (clickermann) [Select]
$page = INT($index / 37)     // тут 12 было по числу строк, если строк теперь 37, правильно?
      FOR($p=0, $p < $page)
         KEYPRESS(#PAGEDOWN)  // перелистываем страницу $page раз
         WAITMS(300)
      END_CYC

4
Общие вопросы / Re: Две переменные
« on: December 19, 2016, 06:20:02 PM »
Точно, только с целыми числами работает, а я то думаю! Спасибо!

5
Спасибо за пример! Код для меня слишком сложен, вникать сейчас буду!)

А можно тот код (чуть выше) без распознавания как-то допилить?))) вроде чуть-чуть осталось))) просто я даже в справке таких команд не вижу чтобы понять как добавить недостающую прокрутку и что за глюки с определением цвета(((

6
Общие вопросы / Re: Две переменные
« on: December 19, 2016, 02:17:20 PM »
Спасибо! Так работает на ура!)
Там задержки нужны для вставки других команд попутных, сохраняются долго данные.


Подскажите, пожалуйста, как сюда добавить рандомность? А ещё лучше управляемую рандомность, т.е. чем ближе $a к 5.6, тем ближе рандомное число сдвигается к 0.004, а чем дальше $a от 5.6, тем ближе к -0.004.

$a = $a + 0.08 + рандомное число (от -0.004 до 0.004)

если $a > 2.8, то
$a = $a + 0.08 + рандомное число (от 0 до 0.004)...

или столько условий сразу нельзя ставить? чет неполучается((( тогда просто рандомное число добавлять.

7
Общие вопросы / Re: Две переменные
« on: December 18, 2016, 07:16:49 PM »
Все-равно только вторую переменную вписывает(((

8
Разобрались с проблемой внесения информации в буфер, если копировать саму ячейку кликер не понимает, дописали редактирование ячейки, потом выделение в ней цифр и уже потом копирование!

Пошла работа с открывающимся меню!
Получается сейчас, если листать не надо, то все верно вбивается! А если начинает перелистывать, то другой номер нажимает(((
Может при необходимости листать вниз можно добавить сначала двойное нажатие pagedown?

Хочу показать как работает открывающееся меню, нажимаю мышкой для открытия, затем клавишу pagedown, и выделение переходит с первой строки на последнюю, и только после второго нажатия pagedown, в меню происходит перелистывание. Получается чтобы полностью дойти до конца списка нужно нажать 5 раз pagedown. Вот как это выглядит:


И не получается перейти на другую карточку если в заданной точке подходящий цвет(((
Как проверить через лог какой он все же цвет определяет и делает ли это?

Вот новый сценарий, немного изменен:
Code: (clickermann) [Select]
// высота строки 20
// строк на экране 37
 
// координаты первой строки выпадающего списка
$stx = 343
$sty = 292
 
// заносим номера подряд как они расположены в выпадающем списке
STRSEPARATE("101,118,123,125,126,132,138,140,143,146,150,152,155,156,158,159,164,166,168,170,175,184,203,206,207,230,231,301,302,303,304,308,316,317,322,328,330,333,337,342,344,348,405,410,415,416,501,503,514,516,602,616,620,621,627,703,827,869,893,931,1023,1042,1052,1061,1071,1078,1119,1206,1210,1211,1215,1240,1310,1325,1332,1401,1512,1534,1555,1716,1728,1838,1863,1886,2001,2026,2731,2732,2735,2744,2750,2752,2754,2781,2902,2904,2907,2908,2909,2917,2922,2930,2934,2936,2969,2970,2978,2980,2989,2990,2994,3130,3132,3239,3714,3722,3926,100042,100133", ",", $data)
 
SUB(get_index, $nn)
   $index = -1
   FOR($j=0, $j < ARRSIZE($data))
      IF($nn = $data[$j])
         $index = $j
         $j = ARRSIZE($data) + 100
      END_IF
   END_CYC
END_SUB
 
FOR($stroke=0, $stroke < 100134)   // перебираем строки
 
   LDOWN(1413,14)  // ... выделяем ексель с уже выбранной ячейкой с номером
   waitms(500)
   LUP(1413,14)
   waitms(500)
   
   KEYDOWN(#F2)    // редактирование ячейки
   WAITMS(15)
   KEYUP(#F2)
   WAITMS(15)

   LDOWN(1115,892)  //  выделение номера
   waitms(100)
   LUP(1171,889) 
   waitms(100)

   KEYDOWN(17)     // копирование номера
   WAITMS(15)
   KEYDOWN(67)
   WAITMS(15)
   KEYUP(17)
   WAITMS(15)
   KEYUP(67)
   WAITMS(15)
   KEYDOWN(#TAB)    // заранее переходим на след ячейку в строке
   WAITMS(15)
   KEYUP(#TAB)
   WAITMS(15)
   KEYDOWN(#TAB)   
   WAITMS(15)
   KEYUP(#TAB)
   WAITMS(15)
 
   $num = INT(FROMCLIP())   // число из буфера
   get_index($num)
   IF($index ! -1)
   LCLICK(321,233)   // открываем выпадающий список - поставлены координаты
   WAITMS(800)
   KEYPRESS(#PAGEUP) 
   WAITMS(100)
   KEYPRESS(#PAGEUP) 
   WAITMS(100)
   KEYPRESS(#PAGEUP)
   WAITMS(100)
   KEYPRESS(#PAGEUP) 
   WAITMS(100)   
   
      $page = INT($index / 37)     // тут 12 было по числу строк, если строк теперь 37, правильно?
      FOR($p=0, $p < $page)
         KEYPRESS(#PAGEDOWN)  // перелистываем страницу $page раз
         WAITMS(300)
      END_CYC
 
      $loc_index = $index - ($page * 37)
      // клик по строке
      LCLICK($stx, $sty + ($loc_index*20))
      WAITMS(300)
 
      LDOWN(1413,14)  // ... выделяем ексель с уже выбранной ячейкой с номером
      waitms(500)
      LUP(1413,14)
      waitms(500)
 
      KEYDOWN(17)     // копирование
      WAITMS(15)
      KEYDOWN(67)
      WAITMS(15)
      KEYUP(17)
      WAITMS(15)
      KEYUP(67)
      WAITMS(15)
      KEYDOWN(39)    // заранее переходим на след ячейку в строке
      WAITMS(15)
      KEYUP(39)
      WAITMS(15)
 
      LDOWN(521,234)  // выбираем куда вставлять данные
      WAITMS(100)
      LUP(660,233)
      WAITMS(100)
 
      KEYDOWN(17)    //  вставляем данные
      WAITMS(15)
      KEYDOWN(86)
      WAITMS(15)
      KEYUP(17)
      WAITMS(15)
      KEYUP(86)
      WAITMS(15)
 
      LDOWN(1413,14)  // ... выделяем ексель с уже выбранной ячейкой с номером
      waitms(500)
      LUP(1413,14)
      waitms(500)
 
      KEYDOWN(17)     // копирование
      WAITMS(15)
      KEYDOWN(67)
      WAITMS(15)
      KEYUP(17)
      WAITMS(15)
      KEYUP(67)
      WAITMS(15)
      KEYDOWN(40)     // переходим на след номер
      WAITMS(15)
      KEYUP(40)
      WAITMS(15)
      KEYDOWN(37)
      WAITMS(15)
      KEYUP(37)
      WAITMS(15)
      KEYDOWN(37)
      WAITMS(15)
      KEYUP(37)
      WAITMS(15)
      KEYDOWN(37)
      WAITMS(15)
      KEYUP(37)
      WAITMS(15)
     
      LDOWN(671,233)  // выбираем куда вставлять данные
      WAITMS(100)
      LUP(861,234)
      WAITMS(100)
 
      KEYDOWN(17)    //  вставляем данные
      WAITMS(15)
      KEYDOWN(86)
      WAITMS(15)
      KEYUP(17)
      WAITMS(15)
      KEYUP(86)
      WAITMS(15)
 
      KEYDOWN(13)    //  сохраняем строчку с введеными данными
      WAITMS(15)
      KEYDOWN(13)
      WAITMS(3000)

      // проверка необходимости перейти к следующей карточке
      GETSCREEN
      IF_PIXEL_IN(1059,892,1052,892, 255)

         LDOWN(97,144) // переходим на след карточку
         WAITMS(100)
         LUP(97,144)
         WAITMS(100)
         KEYDOWN(#TAB)
         WAITMS(150)
         KEYUP(#TAB)
         WAITMS(150)
         KEYDOWN(#DOWN)
         WAITMS(150)
         KEYUP(#DOWN)
         WAITMS(2000)
         
      END_IF    // нужно ещё раз чтобы закрыть IF_PIXE?
 
   END_IF
 
END_CYC
 
HALT

Сейчас получается программа вводит все данные в одну карточку, т.е. проблема со сменой карточек, и ещё проблема с выбором строки в выпадающем меню, не выбирает нужную строку, прикрепил в сообщении в теме гифку как выпадает и прокручивается меню, может там можно в ручном режиме проставлять сколько раз нужно нажать pagedown, вместо определения путем деления количества ячеек на количество строк? Например от такого то числа до такого pagedown не нужен, а от таког числа до такого нажать два раза pagedown.

9
Общие вопросы / Две переменные
« on: December 17, 2016, 11:23:06 PM »
Подскажите, пожалуйста, что исправить в сценарии! Нужно поочередно вводить два значения i и j, но застревает на j, после первого цикла только j начинает перебирать.

Code: (clickermann) [Select]
FOR($i=1, $i < 5.6, 0.08)

LDOWN(719,342) 
WAITMS(100)
LUP(815,345) 
WAITMS(100)
LOGWRITE("i",$i)

KEYSTRING($i, 100)
WAITMS(1500)

FOR($j=5.6, $j > 1, -0.08)

LDOWN(719,369) 
WAITMS(100)
LUP(815,373) 
WAITMS(100)
LOGWRITE("j",$j)

KEYSTRING($j, 100)
WAITMS(1500)

END_CYC
WAITMS(100)

HALT

10
Хахаха, прям мастер стеба, тебя тут для этого и держат? Лучше помог бы, или не знаешь как?

11
Вот спасибо, добрый человек! Половину команд не понимаю, но начну с практики и справки, надеюсь сразу же соображу что к чему! Завтра начну так как в поездке(
kiril, переводить данные из одного формата в другой, как раз работа машин, а человек должен мыслить творчески)))))

Ну вот, в общем, ничегошеньки не понятно((
Можно каждую команду кратко пояснить, пожалуйста! get_index - что значит?
Может какие-то более простые команды есть для таких как я, чайников?))

Вот так не получилось, где-то что-то упустили, даже не выпадает меню в программе(((((:
Code: (clickermann) [Select]
// высота строки 20
// строк на экране 37 
 
// координаты первой строки выпадающего списка
$stx = 164
$sty = 292
 
// заносим номера подряд как они расположены в выпадающем списке
STRSEPARATE("101,118,123,125,126,132,138,140,143,146,150,152,155,156,158,159,164,166,168,170,175,184,203,206,207,230,231,301,302,303,304,308,316,317,322,328,330,333,337,342,344,348,405,410,415,416,501,503,514,516,602,616,620,621,627,703,827,869,893,931,1023,1042,1052,1061,1071,1078,1119,1206,1210,1211,1215,1240,1310,1325,1332,1401,1512,1534,1555,1716,1728,1838,1863,1886,2001,2026,2731,2732,2735,2744,2750,2752,2754,2781,2902,2904,2907,2908,2909,2917,2922,2930,2934,2936,2969,2970,2978,2980,2989,2990,2994,3130,3132,3239,3714,3722,3926,100042,100133,$data)
 
SUB(get_index, $nn)
    $index = -1
    FOR($j=0, $j < ARRSIZE($data))
        IF($nn = $data[$j])
            $index = $j
            $j = ARRSIZE($data) + 100
        END_IF
    END_CYC 
END_SUB
 
FOR($stroke=0, $stroke < 100133)   // перебираем строки, тут нужно что-то менять?
   
LDOWN(1413,14)  // ... выделяем ексель с уже выбранной ячейкой с номером
 waitms(200)   
LUP(1413,14)
 waitms(200)

KEYDOWN(17)     // копирование номера,
WAITMS(15)
KEYDOWN(67)
WAITMS(15)
KEYUP(17)
WAITMS(15)
KEYUP(67) 
WAITMS(15)
KEYDOWN(39)    // заранее переходим на след ячейку в строке
WAITMS(15)
KEYUP(39)
WAITMS(15)


    $num = INT(FROMCLIP())   // число из буфера
    get_index($num)
    IF($index ! -1)
        LCLICK(388,233)   // открываем выпадающий список - поставлены координаты
        WAITMS(500)
 
        $page = INT($index / 37)     // тут 12 было по числу строк, если строк теперь 37, правильно?
        FOR($p=0, $p < $page)
            KEYPRESS(#PAGEDOWN)  // перелистываем страницу $page раз
            WAITMS(300)
        END_CYC
 
        $loc_index = $index - ($page * 37)
        // клик по строке
        LCLICK($stx, $sty + ($loc_index*20))
        WAITMS(300)
 
LDOWN(1413,14)  // ... выделяем ексель с уже выбранной ячейкой с номером
 waitms(200)   
LUP(1413,14)
 waitms(200)

KEYDOWN(17)     // копирование 
WAITMS(15)
KEYDOWN(67)
WAITMS(15)
KEYUP(17)
WAITMS(15)
KEYUP(67) 
WAITMS(15)
KEYDOWN(39)    // заранее переходим на след ячейку в строке
WAITMS(15)
KEYUP(39)
WAITMS(15)

LDOWN(500,233)  // выбираем куда вставлять данные
 WAITMS(100)   
LUP(500,233)
WAITMS(100)

KEYDOWN(17)    //  вставляем данные
WAITMS(15)
KEYDOWN(86)
WAITMS(15)
KEYUP(17) 
WAITMS(15)
KEYUP(86)
WAITMS(15)

LDOWN(1413,14)  // ... выделяем ексель с уже выбранной ячейкой с номером
 waitms(200)   
LUP(1413,14)
 waitms(200)

KEYDOWN(17)     // копирование 
WAITMS(15)
KEYDOWN(67)
WAITMS(15)
KEYUP(17)
WAITMS(15)
KEYUP(67) 
WAITMS(15)
KEYDOWN(40)     // переходим на след номер
WAITMS(15)
KEYUP(40)
WAITMS(15)
KEYDOWN(37)               
WAITMS(15)
KEYUP(37)
WAITMS(15)
KEYDOWN(37)               
WAITMS(15)
KEYUP(37)
WAITMS(15)

LDOWN(500,233)  // выбираем куда вставлять данные
 WAITMS(100)   
LUP(500,233)
WAITMS(100)

KEYDOWN(17)    //  вставляем данные
WAITMS(15)
KEYDOWN(86)
WAITMS(15)
KEYUP(17) 
WAITMS(15)
KEYUP(86)
WAITMS(15)

KEYDOWN(13)    //  сохраняем строчку с введеными данными
WAITMS(15)
KEYDOWN(13)
WAITMS(15)

// проверка необходимости перейти к следующей карточке
GETSCREEN(1052,925, 255)
IF_PIXEL_IN(1052,925, 255)

LDOWN(13,962) // переходим на след карточку
 WAITMS(300)
LUP(13,962)
 WAITMS(800)
KEYDOWN(40)     
WAITMS(15)
KEYUP(40)
WAITMS(15)

 END_IF    // нужно ещё раз чтобы закрыть IF_PIXE?

 END_IF
     ELSE
        LOGWRITE("Такое число не задано ", $num)
    END_IF
END_CYC
 
HALT

12
Ничего они не наркоманы, не наговаривай на хороших людей!) так и планировалось делать!(
В общем есть идея, как уйти от распознавания!!
Нужно определить номер, который копируется в буфер из экселя, далее под каждый номер написать свой порядок действий и всё!
Номера в программе всплывают по тем же координатам каждый раз, прокрутка с одной скоростью, так что дело тонкой настройки и не промахнуться! А далее как выше уже описывалось. Там всего 120 номеров( да все-равно быстрее, чем вручную тыкателем работать и интересней) остается подсказать какие команды использовать чтобы сделать
IF "такой-то номер в буфере, делать то"
IF "такой-то номер делать другое то"
Или вообще какие-то команды использовать другие, чтобы сразу понимать на какую строчку в скрипте переходить!! сделаю первый номер, остальные уже автоматом пойдут, координаты исправлять, да прокрутку мышью) так что 120 уже не кажется таким большим числом!
Кто поможет с такой упрощенной задачей!?) проще же?)

13
В вашей программе нельзя вставлять из буфера?
Там возможно занесение записей только по одной?
можно вставлять, но только не номер, его нужно выбрать из всплывающего меню, в каждой карточке несколько номеров, в ексель это вторая колонка, первая это номер карточки, а третья и четвертая колонки в ексель эти данные как раз можно скопировать и просто вставить в соответствующие ячейки в программе, но только после того как мы выберем номер из вспывающего меню. Сейчас прикреплю скрин как это выглядит, правда часть потерта, личная информация сори))
С кликами и выбором меню, копированием и всякое такое это я разбераюсь уже, а вот как сюда прикрутить распознавание, чтобы выбрать в меню такое же число что и в буфере, вот в чем не могу разобраться, помогите!)
Ещё мне подсказали вместо ексель работать с txt, в котором табами разделены данные, но это мне тоже сложно освоить сразу, так что можете к моему неэффективному методу сначала подсказать команды, а затем к варианту с txt)))

14
Получается первый столбик надо контролировать, чтобы вовремя переключиться между карточками в программе, вторую колонку надо копировать в буфер, чтобы найти такой же номер в программе, но в ней только распознавание поможет, так как там нельзя скопировать сразу в нужную ячейку или выделить текст для распознания, там сначала нужно нажать на выплывающее меню, затем в нем найти такой же номер, создать строку, путем нажатия на этот номер, и уже в появившейся строке в двух колонках рядом скопировать данные из ексель (двух колонок правых).
вот как я вижу данный процесс, во второй колонке копируем номер и находим этот номер в программе (пара кликов для создания карточки и открывания всплывающего меню, далее скрин, чтобы найти номер из буфера, если нет номера, то прокручиваем список, опять делаем скрин, находим номер, нажимаем на него, и появляется строка с тремя колонками в одной этот найденный номер в две остальные просто копируем данные из двух правых колонок в ексель) надеюсь сейчас понятен мой ход мысли) если тут можно без распознавания обойтись было бы отлично) но пока что-то не придумали как(( Спасибо!

15
Здравствуйте! Помогите, пожалуйста, как скопированные в буфер цифры распознать в определенной области? Шрифт Calibri, поделитесь кто-нибудь скриптом-распознавателем самым простым!))

Pages: [1]