Author Topic: Настройка STRCONCAT  (Read 3245 times)

0 Members and 5 Guests are viewing this topic.

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Настройка STRCONCAT
« on: December 07, 2020, 10:53:05 AM »
Всем привет! Помогите пожалуйста настроить список в столбик.

В общем, по порядку выделяет и копирует номера телефонов и должен группировать в столбик в формате [номер](tel:номер) без тире и прочего. Только + и цифры.

Code: (clickermann) [Select]
GETSCREEN(405,430,428,1035)
   SCANPICTURE($ARR_SCAN, 405,430,428,1035, "+7.bmp", -1, 80)
   $ARR_NUM = 0
   #DEFINE EOL: CHAR(13), CHAR(10)
   $nom = "" // Строка-столбик, с разделителями EOL (изначально пустая)
   TOCLIP("") // Очищаем буфер
   WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      FOR($a=0,$a<3)
         LCLICK(402,$Y+4)
         WAITMS(10)
      END_CYC
      WAITMS(500)
      copy()
      $nom = STRFILTER($nom, "+7894561230", 1)
      $nom = STRCONCAT("[", $nom, "](tel:" $nom, ")", EOL, FROMCLIP())
   END_CYC

Выходит так:
["](tel:""")
+7‒923‒483‒94‒49
["](tel:""")
+7‒983‒444‒57‒11

Должно быть так:
[+79234839449](tel:+79234839449)
[+79834445711](tel:+79834445711)

И второй вопрос:
Скопирован столбик. Если в строке имеется ровно 11 цифр, то необходимо поставить фильтр от тире и )(, а также заключить номер в такие же скобки в виде ссылки: [цифры](tel:цифры)
Если в строке больше или меньше 11 цифр, то оставить всё как есть.

Например,

Исходный текст:

Иван
+7 (983) 569-96-74
ivan89@mail.ru
Подрядчик

После кликера:

Иван
[+79835699674](tel:+79835699674)
ivan89@mail.ru
Подрядчик

Code: (clickermann) [Select]
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS (#C)
KEYUP (#CTRL)
WAITMS (150)
$n = FROMCLIP()


// Операции с переменной



TOCLIP($n)
WAITMS (10)
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS (#V)
KEYUP (#CTRL)
HALT

Заранее спасибо!!!
« Last Edit: December 07, 2020, 11:11:58 AM by SimplY »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Настройка STRCONCAT
« Reply #1 on: December 07, 2020, 04:59:53 PM »
Нет запятой в 19 строке, после "](tel:"

Что делает подпрограмма copy()  ?
Пока видно в 18 строке, что ты фильтруешь переменную $nom которая пустая, а не то что скопировали.
Может должно быть
Code: (clickermann) [Select]
$nom = STRFILTER(FROMCLIP(), "+7894561230", 1)
« Last Edit: December 07, 2020, 05:01:33 PM by Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Настройка STRCONCAT
« Reply #2 on: December 07, 2020, 05:31:11 PM »
Code: (clickermann) [Select]
#define @CRLF:STRCONCAT(char(13),char(10))

$text = FROMCLIP()
$start = STRPOS($text, @CRLF) + 2
$end = STRPOS(STRCUT($text, $start, 1000), @CRLF) - 1 + $start - 1
$phone_str = STRCUT2($text, $start, $end)
//print("*", $phone_str, "*")

IF(STRLEN(STRFILTER($phone_str, "0123456789", 1))  = 11)
    $phone_new = STRFILTER($phone_str, "+0123456789", 1)
    $str_new = STRCONCAT("[", $phone_new, "](tel:", $phone_new, ")")
    //print("*", STRCUT($text, $end, 1000), "*")
    $text = STRCONCAT(STRCUT2($text, 1, $start-1), $str_new, STRCUT($text, $end+1, 1000))   
END_IF
print($text)
« Last Edit: December 07, 2020, 05:42:12 PM by Vint »


SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Re: Настройка STRCONCAT
« Reply #3 on: December 07, 2020, 10:27:56 PM »
Нет запятой в 19 строке, после "](tel:"

Что делает подпрограмма copy()  ?
Пока видно в 18 строке, что ты фильтруешь переменную $nom которая пустая, а не то что скопировали.
Может должно быть
Code: (clickermann) [Select]
$nom = STRFILTER(FROMCLIP(), "+7894561230", 1)

copy() выполняет сочетание клавиш Ctrl + C и после задержка 200 ms.

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Re: Настройка STRCONCAT
« Reply #4 on: December 08, 2020, 06:42:50 AM »
Нет запятой в 19 строке, после "](tel:"

Что делает подпрограмма copy()  ?
Пока видно в 18 строке, что ты фильтруешь переменную $nom которая пустая, а не то что скопировали.
Может должно быть
Code: (clickermann) [Select]
$nom = STRFILTER(FROMCLIP(), "+7894561230", 1)

Спасибо! Получилось! Но теперь переводится в ссылку только 1-й номер. Остальные нет.
[+79231262485](tel:+79231262485)
+7‒923‒126‒24‒85

Изначально номера 3.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Настройка STRCONCAT
« Reply #5 on: December 08, 2020, 08:08:35 AM »
Спасибо! Получилось! Но теперь переводится в ссылку только 1-й номер. Остальные нет.
[+79231262485](tel:+79231262485)
+7‒923‒126‒24‒85

Изначально номера 3.

Где здесь три номера?
Скопирован столбик. Если в строке имеется ровно 11 цифр, ...
Исходный текст:

Иван
+7 (983) 569-96-74
ivan89@mail.ru
Подрядчик

После кликера:

Иван
[+79835699674](tel:+79835699674)
ivan89@mail.ru
Подрядчик


SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Re: Настройка STRCONCAT
« Reply #6 on: December 08, 2020, 09:54:56 AM »
Спасибо! Получилось! Но теперь переводится в ссылку только 1-й номер. Остальные нет.
[+79231262485](tel:+79231262485)
+7‒923‒126‒24‒85

Изначально номера 3.

Где здесь три номера?
Скопирован столбик. Если в строке имеется ровно 11 цифр, ...
Исходный текст:

Иван
+7 (983) 569-96-74
ivan89@mail.ru
Подрядчик

После кликера:

Иван
[+79835699674](tel:+79835699674)
ivan89@mail.ru
Подрядчик

Вот другой пример из 1 вопроса:

+7 (383) 214‒47‒45
+7 (38341) 3‒50‒50
+7 (38341) 3‒50‒55

Кликер копирует 3 номера по очереди и вставляет в столбик такой результат:

[+73832144745](tel:+73832144745)
+7 (383) 214‒47‒45
Только самый первый номер и в двух вариантах.

Должно быть так:
[+73832144745](tel:+73832144745)
[+73834135050](tel:+73834135050)
[+73834135055](tel:+73834135055)
« Last Edit: December 08, 2020, 11:15:32 AM by SimplY »

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Re: Настройка STRCONCAT
« Reply #7 on: December 08, 2020, 11:14:27 AM »
Спасибо! Получилось! Но теперь переводится в ссылку только 1-й номер. Остальные нет.
[+79231262485](tel:+79231262485)
+7‒923‒126‒24‒85

Изначально номера 3.

Где здесь три номера?
Скопирован столбик. Если в строке имеется ровно 11 цифр, ...
Исходный текст:

Иван
+7 (983) 569-96-74
ivan89@mail.ru
Подрядчик

После кликера:

Иван
[+79835699674](tel:+79835699674)
ivan89@mail.ru
Подрядчик

Во втором вопросе он тоже редактирует только первый номер.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Настройка STRCONCAT
« Reply #8 on: December 08, 2020, 01:25:46 PM »
Во втором вопросе он тоже редактирует только первый номер.

Так я о том и говорю. Предоставлен пример входных данных. Под них и написано. Там нигде не сказано, что номеров больше или может быть больше, или может не быть вовсе.
Скрипт пишется под конкретные входные данные. Будут другие данные - будет другой скрипт.

Чтобы сразу получить правильный ответ, нужно предоставлять все данные. Вот же интересно по десять раз переделывать одно и то же. Будто время девать некуда.
« Last Edit: December 08, 2020, 01:47:07 PM by Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Настройка STRCONCAT
« Reply #9 on: December 08, 2020, 01:41:04 PM »
Вот другой пример из 1 вопроса:

+7 (383) 214‒47‒45
+7 (38341) 3‒50‒50
+7 (38341) 3‒50‒55

Кликер копирует 3 номера по очереди и вставляет в столбик такой результат:

[+73832144745](tel:+73832144745)
+7 (383) 214‒47‒45
Только самый первый номер и в двух вариантах.

Должно быть так:
[+73832144745](tel:+73832144745)
[+73834135050](tel:+73834135050)
[+73834135055](tel:+73834135055)

По первому примеру я только сказал про ошибку в строке 18
Code: (clickermann) [Select]
$nom = STRFILTER(FROMCLIP(), "+7894561230", 1)
Остальное ты сам так написал, я же не знаю зачем
Code: (clickermann) [Select]
$nom = STRCONCAT("[", $nom, "](tel:" $nom, ")", EOL, FROMCLIP())может ты добавил , EOL, FROMCLIP() для отладки (перевод строки и вывод исходного номера). Раз сам добавил, значит сам и сможешь убрать.

По поводу того, что только первый номер, так я не в курсе что делает твой код. Что конкретно ищет, потом там в цикле кликает, что-то копирует. Это знаешь только ты.
Я предположил, что он в цикле кликает и копирует по одному номеру, логично же? И вопрос был именно в форматировании номера, а не в его поиске и копировании. Я и предположить не мог, что там копируется пачка номеров сразу.
« Last Edit: December 08, 2020, 01:50:43 PM by Vint »