Разбор содержимого строки

Пользовательские блоки расширяющие стандартные возможности работы со строками.
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Разбор содержимого строки

Сообщение Ingwar »

Блок для вычленения нужной информации между заданным разделителем из СМС, с СОМ порта или SD.
Содержит 5 выходов.
На пример строка на входе jjjeee123;1r23;234;we;asd;5;7775 в качестве разделителя выбран символ ";"

На выходах блока будут соответственно:
1r23
234
we
asd
5

Структура очень простая и легко можете переделать на большее или меньшее кол-во.
Для сравнения (при создании блока с нужным кол-вом выходов), в качестве примера, прилагаю блок на 3 выхода.

Если будете использовать блок с избыточным кол-вом выходов, будьте готовы к "мусору" на неиспользуемых выходах.
pars_5_out_(CODE).ubi
pars_3_out_(CODE).ubi
parsing.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

Разбор содержимого строки

Сообщение AlexCrane »

[ref]Ingwar[/ref], Думал строку разобрать по словам с разделителем "пробел", ан нет первое слово пропало т.к. спереди нет пробела. Как мне кажется намного полезнее разбирать по окончанию разделителя

Пример jjjeee123;1r23;234;we;asd;5;7775;

На выходе:
jjjeee123
1r23
234
we
asd

И разрешение использовать такого типа блоки один раз не гуманно :shok:
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Разбор содержимого строки

Сообщение Ingwar »

AlexCrane писал(а): 16 янв 2019, 20:19кажется намного полезнее разбирать по окончанию разделителя
Ingwar писал(а): 12 янв 2019, 20:13между заданным разделителем
Просто делал блок из примера под свои нужды, в дополнение к чтению с SD.
AlexCrane писал(а): 16 янв 2019, 20:19И разрешение использовать такого типа блоки один раз не гуманно
Да я не против, но во первых в моем проекте достаточно 1 раз, а во вторых - я решил изучать язык пару недель назад (Sancho не даст соврать) :smile44:
И совершенно не против если Вы подправите и выложите более удобный вариант.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

Разбор содержимого строки

Сообщение AlexCrane »

[ref]Ingwar[/ref], Находит в строке элемент выделенный с обоих сторон разделителем sep по его номеру вхождения index
Пример:
000;111;222;333;444;555;666;777;888;999;w

по индексу 1 найдет 111
000 и w не найдутся т.к. не выделены разделителем с двух сторон

Если по индеку не находим ничего на выходе пустая строка и Find = false;

Оттестируй
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Разбор содержимого строки

Сообщение Ingwar »

AlexCrane писал(а): 17 янв 2019, 21:08Оттестируй
Спасибо. Работает.
Проверил пока в эмуляторе.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Разбор содержимого строки

Сообщение rw6cm »

[ref]Ingwar[/ref],
Зачем замарачиваться, если это элементарно делается встроенными блоками :)
Парсинг строк.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Разбор содержимого строки

Сообщение Ingwar »

rw6cm писал(а): 17 янв 2019, 23:38Зачем замарачиваться,
Не считая удобства (хотя и Ваш вариант можно загнать в ПБ) - в 2 раза меньше памяти устройства и в 6 раз меньше динамической памяти.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Разбор содержимого строки

Сообщение rw6cm »

Ingwar писал(а): 18 янв 2019, 00:30Не считая удобства (хотя и Ваш вариант можно загнать в ПБ) - в 2 раза меньше памяти устройства и в 6 раз меньше динамической памяти.
Откуда такие астрономические данные :smile37: :)
[spoiler]
тест1.png
тест2.png
[/spoiler]

Отправлено спустя 1 час 28 минут 46 секунд:
Если по логике предложенной AlexCrane (выводить последовательно в одну переменную)
еще проще
Парсинг в 1переменную.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Разбор содержимого строки

Сообщение Ingwar »

rw6cm писал(а): 18 янв 2019, 02:25Откуда такие астрономические данные
Мы разные блоки сравниваем. И правильнее сравнивать без ввода/вывода. Я отключил в Вашем проекте 1 и 3 платы.
Ваш на стандартных блоках.
[spoiler]
ср2.png
[/spoiler]
С первого поста
[spoiler]
ср3.png
[/spoiler]
И вариант Александра по моей просьбе с последовательным выводом
[spoiler]
ср1.png
[/spoiler]

P.S. Ваш последний
[spoiler]
ср4.png
[/spoiler]
Тут все гораздо лучше конечно. Только нет произвольной выборки по индексу.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

Разбор содержимого строки

Сообщение AlexCrane »

rw6cm писал(а): 18 янв 2019, 02:25выводить последовательно в одну переменную
Ingwar писал(а): 18 янв 2019, 08:11И вариант Александра по моей просьбе с последовательным выводом
Последовательный вывод был просто для примера, а так произвольно....
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Разбор содержимого строки

Сообщение rw6cm »

Ingwar писал(а): 18 янв 2019, 08:11Мы разные блоки сравниваем. И правильнее сравнивать без ввода/вывода. Я отключил в Вашем проекте 1 и 3 платы.
Тогда правильней удалить 1,3, платы и расклад будет другой (при отключении платы объем кода не сильно меняется)
Ingwar писал(а): 18 янв 2019, 08:11Только нет произвольной выборки по индексу.
да это не проблема
Парсинг в 1пер по индексу.flp
кстати не понятно
AlexCrane писал(а): 17 янв 2019, 21:08000 и w не найдутся т.к. не выделены разделителем с двух сторон
как вести счет по индексу перед словом или после? как то с двух сторон в путаницу вводит.

п/с вообще я просто предложил, как это сделать стандартными блоками, тем кто захочет сделать что то под свои хотелки )
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Разбор содержимого строки

Сообщение Ingwar »

rw6cm писал(а): 18 янв 2019, 11:58как то с двух сторон в путаницу вводит.
Это просто для примера,что не заключенные в разделитель - не читаются.
rw6cm писал(а): 18 янв 2019, 11:58Тогда правильней удалить 1,3, платы и расклад будет другой (при отключении платы объем кода не сильно меняется)
Да, согласен, стало меньше
[spoiler]
ср5.png
[/spoiler]
rw6cm писал(а): 18 янв 2019, 11:58как это сделать стандартными блоками, тем кто захочет сделать что то под свои хотелки )
За это и + :smile9:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

Разбор содержимого строки

Сообщение AlexCrane »

rw6cm писал(а): 18 янв 2019, 11:58как вести счет по индексу перед словом или после? как то с двух сторон в путаницу вводит.
В этом согласен, я бы вел счет по разделителю после, так будет правильнее
к примеру строка:
В лесу родилась ёлочка
с разделителем пробел
разбиралась строго по словам, причем последний пробел не учитывался бы:
1 В
2 лесу
3 родилась
4 ёлочка

[ref=#ff8000]rw6cm[/ref], вот Вам задачка, справитесь?
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Разбор содержимого строки

Сообщение rw6cm »

AlexCrane писал(а): 18 янв 2019, 12:38rw6cm, вот Вам задачка, справитесь?
:)
In the forest was born herringbone.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

Разбор содержимого строки

Сообщение AlexCrane »

rw6cm писал(а): 18 янв 2019, 14:43In the forest was born herringbone.flp
Не, нужно с выводом нужного слова, к примеру на входе 2, на выходе the
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Разбор содержимого строки

Сообщение rw6cm »

AlexCrane писал(а): 18 янв 2019, 15:56Не, нужно с выводом нужного слова, к примеру на входе 2, на выходе the
В лесу родилась елочка.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

Разбор содержимого строки

Сообщение AlexCrane »

[ref]Ingwar[/ref], [ref=#ff8000]rw6cm[/ref],
Для тех кто не хочет заморачиваться, то-же самое что и выше в посту, только на ПБ
В лесу родилась елочка ПБ.flp
Игорь, так более правильно парсить, чем искать вложение между разделителями :yes:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Аватара пользователя
gerdog
Рядовой
Сообщения: 42
Зарегистрирован: 04 янв 2018, 07:46

Разбор содержимого строки

Сообщение gerdog »

[ref]AlexCrane[/ref], огромное человеческое спасибо тебе!!! кажется то, что нужно!
KulibinOrsk
Лейтенант
Сообщения: 516
Зарегистрирован: 25 фев 2018, 08:48
Откуда: Оренбург
Имя: Александр

Разбор содержимого строки

Сообщение KulibinOrsk »

Полезная вещь. В копилку.
ВОПРОС ЗНАТОКАМ: подскажите как переменную string записать в eeprom а потом считать и записать в другую переменную.
А частности с sim800 считываю номер телефона +7922620... его надо сохранить в еепром и при необходимости считать для работы.
Аватара пользователя
Phazz
Полковник
Сообщения: 3129
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 233 раза
Поблагодарили: 114 раз

Разбор содержимого строки

Сообщение Phazz »

[ref]KulibinOrsk[/ref], перевести в longinteger

Отправлено спустя 50 секунд:
Без плюса разумеется
Ответить

Вернуться в «Работа со строками»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя