Функция-конвертер строки для отправки сообщений в Телеграмм

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Не ко всем модемам есть словари. Вы же сами это констатировали - не удается нормально наладить работу Вашего скрипта с SMS PDU Микротиковских родных модемов - нет хороших словарей. А может там и "обрезание" специально какое ни то сделано от Микротик, чтобы только они и больше никто.
Надо Хуавей покупать ... Но эту дискуссию лучше вести в обсуждении Вашего скрипта. Пока он к сожалению "для избранных", а мой работает у тех кто может его нормально "скопипастить" с форума или со статьи на Хабре :-)
Может воспользуюсь Вашим советом и перебью массив с ключами в виде кодов символов в 1251, но у меня и так работает, это ведь тоже не коммерческий продукт. ::yaz-yk:


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Единственно, что ещё можно включить - это поддержку отображения символа № (русского номера), что и сделал заменив его на английский обычный аналог (отображаться будет как #). Тогда будут поддерживаться все символы, которые можно набрать с русской клавиатуры. Зачем поддерживать отображения в Телеграмм символов, которые нельзя набрать в Микротике с клавиатуры - не понимаю, Телеграмм всё равно не сможет многие из них адекватно отобразить, придется заменять их кодами смайликов, а это уже не две шестнадцатиричные цифры - для них нужно менять алгоритм сборки строки. Так что ну их на х ...
В том виде как функция есть она маленькая и отрабатывает на все 100%, громоздить не стоит.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Дополнительно к функции-конвертеру сделал функцию транслитерации русских символов. Также можно использовать для отправки сообщений в Телеграмм или ещё для каких нужд.
https://habr.com/ru/post/519406/


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
pepelxl
Сообщения: 161
Зарегистрирован: 23 июл 2013, 18:47

вообщем , поддержка соизволила спустится до обычных смертных.
официальный ответ
Hello,
Thank you for contacting MikroTik Support.
Please use the ones that are working, there is no need to encode and translate all possible transcriptions, hex codes are not supported as keys.
Best regards,
Не, ну не дол.....ы?
Это я к тому, что вот этот синтаксис работает:

Код: Выделить всё

:local array {"\48="\48";"I"="\49"}
а синтаксически правильный нет

Код: Выделить всё

:local array {"\48"="\48";"I"="\49"}
в любом случаи задачу можно легко решить через два массива, но читаемость никакая


Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Даже если бы шестнадцатиричные коды поддерживались бы в качестве ключей ... Никак не могу придумать как осуществить на практике Ваше наставление - перебить мой массив кодами символов в виде ключей.

То есть было скажем [:toarray {"А"="D090"; "Б"="D091"; .... и т.д....
Ну сделаю я [:toarray {"90"="D090"; "91"="D091"; и т д....

А как потом мне сравнить символ извлекаемый из строки с его кодом ? В микротик ведь нет функции преобразования символа в его код. Значит надо самому преобразовать как-то. Я в этом мягко говоря .... У Вас нет скрипта готового для преобразования символа в его код 1251 кодировки ?


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
pepelxl
Сообщения: 161
Зарегистрирован: 23 июл 2013, 18:47

В рос есть возможность указывать символ в hex. Для этого есть слеш перед указанием значения. То есть запись "H" равна "/48",но при указании ключей это не работает, вот я и написал в поддержку.


Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Это я знаю. А нельзя что ли указать ключ в десятичном виде ?


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
pepelxl
Сообщения: 161
Зарегистрирован: 23 июл 2013, 18:47

Здрасте, приехали, кто-то хвалился хорошим знанием ассемблера. Указание числом - это написание типа num. А это 64-битное беззнаковое число и займёт оно восьмибайтовый регистр.; символ в тексте это байт и займёт он однобайтный регистр; сравнивать их на прямую не верно, придётся делать приведение типов, а это гимор и плохой код.
Хотя в целом идея имеет место быть, но правильнее переводить изначальный текст в hex значения. В скриптах рос нет прямого приведения типов, а придумать с ходу костыль у меня не получилось.


Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Здрасте ! Жаль, что в Микротик РОС нет Ассемеблера, а знанием LUA я не хвалился. Значит пока останется как есть. Главное - работает !
Ну фиг бы с ним с плохим кодом. Лучше подскажите как перевести 10 значное число от 0 до 255 в его шестнадцатиричный код на LUA Микротик.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
pepelxl
Сообщения: 161
Зарегистрирован: 23 июл 2013, 18:47

Лучше подскажите как перевести 10 значное число от 0 до 255 в его шестнадцатиричный код на LUA Микротик.
вашу хотелку можно понять двояко, если не трояко.
10 значное число это число с 10 знаками. Или вам надо отобразить число записанное в десятеричной системе счисления в шестнадцатеричной форме?
И в каком типе переменной будет исходное число и целевое?
Нужен пример в коде, тогда и ответ будет соответствующий.


Ответить