Конвертер String >> Boolean

Пользовательские блоки для конвертации различных типов данных, а так-же шифрования и дешифровки
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2437
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 31 раз

Конвертер String >> Boolean

Сообщение Dryundel »

Конвертер String >> Boolean
.
String-Boolean.jpg
Конвертер_String____Bool_(Code_-_Professional).ubi
.
Конвертирует строковую переменную в Boolean.
При наличии на входе "0" - на выходе логический ноль.
В других случаях логическая единица.
Актуален при работе с MQTT

Расширенная версия блока
.
String-Boolean(расширенный).jpg
String-Boolean(расширенный).flp
.
В расширенной версии добавлен параметр выбора логики:
- В случае проверки на ноль, - при "0" на входе, на выходе будет логический ноль,
во всех других случаях на выходе будет логическая единица.
- В случае проверки на единицу, - при "1" на входе, на выходе будет логическая единица,
во всех других случаях на выходе будет логический ноль.

Блок не создает дополнительных переменных и имеет короткий код.

Спасибо всем, кто принял участие в дискуссии.
.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Dryundel 08 окт 2021, 12:55, всего редактировалось 1 раз.
Аватара пользователя
Phazz
Полковник
Сообщения: 3129
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 233 раза
Поблагодарили: 114 раз

Конвертер String >> Boolean

Сообщение Phazz »

Наверное лучше будет если 0 это 0 а 1 это 1. Тем более включать 1 при любых данных вообще не очень решение
Аватара пользователя
Rovki
Полковник
Сообщения: 5726
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 222 раза
Контактная информация:

Конвертер String >> Boolean

Сообщение Rovki »

Phazz писал(а): 07 окт 2021, 18:42 Наверное лучше будет если 0 это 0 а 1 это 1. Тем более включать 1 при любых данных вообще не очень решение
Согласен . А то кто то матюкнется и включится обогрев , свет. :smile453:
и не совсем понятно что значит "0" в стринге , слово что ли , или отсутствие символов ? И почему нельзя использовать штатное сравнение строк ?
Электронщик до мозга костей и не только
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

Конвертер String >> Boolean

Сообщение Naladchik »

Dryundel писал(а): 07 окт 2021, 16:36 При наличии на входе "0" - на выходе логический ноль.
При таком решении я бы проверял на единицу, по мне так логичнее.
(<S> == "1") ? 1 : 0
Win10-64. FLProg Portable.
Изображение
Аватара пользователя
Dryundel
Полковник
Сообщения: 2437
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 31 раз

Конвертер String >> Boolean

Сообщение Dryundel »

Phazz писал(а): 07 окт 2021, 18:42 Наверное лучше будет если 0 это 0 а 1 это 1. Тем более включать 1 при любых данных вообще не очень решение
Не согласен.
Во первых из аналогии if(int Val) { } следует именно такая логика.
Во вторых если на выходе bool то и на "1" тоже буде логическая единица.
В третьих код будет гораздо длиннее.
Есть и ещё несколько мелких ЗА такой вариант.
Аватара пользователя
Phazz
Полковник
Сообщения: 3129
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 233 раза
Поблагодарили: 114 раз

Конвертер String >> Boolean

Сообщение Phazz »

Как раз в логике boolean 1 это 1 или true. А вот 0 это все что не 1. Если например из integer в bool
Аватара пользователя
Dryundel
Полковник
Сообщения: 2437
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 31 раз

Конвертер String >> Boolean

Сообщение Dryundel »

Phazz писал(а): 07 окт 2021, 20:21 Как раз в логике boolean 1 это 1 или true. А вот 0 это все что не 1. Если например из integer в bool
Какой смысл переводить integer в bool ?
И в каких случаях по вашему это может пригодиться?

Вероятно Вы не поняли аналогию которую я приводил в пример.
Хорошо, давайте подробнее поясню.

Когда создается условие относительно boolean valBool, то можно написать так:
if ( valBool == 1 )
или так:
if ( valBool )
Результат один и тот же.

В случае с ineger valint тоже можно написать:
if ( valint == 1 )
В этом случае условие выполнится только если valint = 1
А можно написать:
if ( valint )
Тогда условие будет выполняться при любых значениях valint отличных от "0".
Т.е. если речь идет о физическом пине то если:
if ( valint ) {digitalWrite(lPin, 1);}
При любом значении valint - на пине появится высокий уровень и лишь при valint = 0, на пине будет низкий уровень.

Теперь рассмотрим следующий момент:
Предположим мы управляем яркостью светильника через MQTT
А я упоминал что:
Dryundel писал(а): 07 окт 2021, 16:36 Актуален при работе с MQTT
Ну так вот в этом случае, одной переменной мы можем управлять сразу двумя устройствами - включателем и диммером.
Пришло "50" - включатель включился, диммер выставился на 50%
Пришло "80" - включатель включился, диммер выставился на 80%
Пришло "0" - включатель выключился, что с диммером уже без разницы.
2021-10-07_211633.jpg
.
Вот исходя из этих мелочей и принималось решение задействованной логики.
.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Rovki
Полковник
Сообщения: 5726
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 222 раза
Контактная информация:

Конвертер String >> Boolean

Сообщение Rovki »

А зачем тогда при шиме =0 выключатель ? Для гальванической развязки ? Обычно делают шим ,у которого при уставке 0 ,на выходе нет импульсов(напряжение 0) , а при 100% нет пауз ( напряжение максимальное) , во всех других случаях длительность импульса пропорциональна уставке( лучше не линейная зависимость для освещения).
Электронщик до мозга костей и не только
Аватара пользователя
Phazz
Полковник
Сообщения: 3129
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 233 раза
Поблагодарили: 114 раз

Конвертер String >> Boolean

Сообщение Phazz »

[ref]Dryundel[/ref], Ну чтож хозяин - барин.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2437
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 31 раз

Конвертер String >> Boolean

Сообщение Dryundel »

Rovki писал(а): 07 окт 2021, 21:38 А зачем тогда при шиме =0 выключатель ?
А затем, что бы обесточить высоковольтную часть прибора. Убедительно? :)
Если да, то дальнейшая часть реплики вероятно отпадает. :)

Мне нравятся все эти правильные вопросы. Всегда рад, аргументированно отвечать за свою работу. :)
Phazz писал(а): 07 окт 2021, 21:53 Dryundel, Ну чтож хозяин - барин.
Неужели не убедил?
Готов выслушать Ваши аргументы.
alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05 окт 2021, 13:29
Имя: алексей

Конвертер String >> Boolean

Сообщение alexbonk »

Dryundel писал(а): 07 окт 2021, 21:58 Какой смысл переводить integer в bool
чтобы в флпрог возможно было подать bool на вход, где требуется именно bool на входе.
И по другому никак))))

или вы можете предложить решение как можно на булеан-вход подать сразу интеджер? думаю не можете.

Отправлено спустя 3 минуты 12 секунд:
Dryundel писал(а): 07 окт 2021, 16:36 Актуален при работе с MQTT
что мешает слать в этом случае "on/off" например?

Отправлено спустя 2 минуты 29 секунд:
Dryundel писал(а): 07 окт 2021, 22:17 Ну так вот в этом случае, одной переменной мы можем управлять сразу двумя устройствами - включателем и диммером.
Пришло "50" - включатель включился, диммер выставился на 50%
Пришло "80" - включатель включился, диммер выставился на 80%
Пришло "0" - включатель выключился, что с диммером уже без разницы
это что за экономия? ресурсов? ресурсов чего?

ладно бы еще такие костыли использовать при модбасе или асме...
Но использовать такое в mqtt )))))

более того - если эти циферки будут в стринге - то можно точно также управлять и диммером и устройством))))
Последний раз редактировалось alexbonk 07 окт 2021, 22:35, всего редактировалось 4 раза.
Аватара пользователя
Phazz
Полковник
Сообщения: 3129
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 233 раза
Поблагодарили: 114 раз

Конвертер String >> Boolean

Сообщение Phazz »

[ref]Dryundel[/ref], вам уже ответили, случайные данные могут включить например свет
alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05 окт 2021, 13:29
Имя: алексей

Конвертер String >> Boolean

Сообщение alexbonk »

Phazz писал(а): 07 окт 2021, 22:20 вам уже ответили, случайные данные могут включить например свет
например в момент ребута.
особенно интересно будет если стринг в это время прилетает из юарта.

логика видать такая:
но ведь там же не 0? нет! а что там? мусор! ок, если там не 0, тогда включаем выход в 1.... :smile9: :D :smile390:
Аватара пользователя
Dryundel
Полковник
Сообщения: 2437
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 31 раз

Конвертер String >> Boolean

Сообщение Dryundel »

alexbonk писал(а): 07 окт 2021, 22:20 чтобы в флпрог возможно было подать bool на вход, где требуется именно bool на входе.
И по другому никак))))
Это философская теория. Попробуйте привести реальный пример действий при которых у вас появляется integer который требуется подать на цифровой пин.
alexbonk писал(а): 07 окт 2021, 22:20 что мешает слать в этом случае "on/off" например?
Зачем? Для чего? Какой смысл если надо 0 /1 ? Ничего не мешает слать 0 или 1.
alexbonk писал(а): 07 окт 2021, 22:20 это что за экономия? ресурсов? ресурсов чего?
А хоть бы и так. Экономия ресурсов. Трафик String и преобразования весьма ресурсоемкая операция.
Хотя есть и другие тонкости, об этом я писал выше. Будьте чуть внимательней.
Phazz писал(а): 07 окт 2021, 22:20 Dryundel, вам уже ответили, случайные данные могут включить например свет
alexbonk писал(а): 07 окт 2021, 22:32 например в момент ребута.
особенно интересно будет если стринг в это время прилетает из юарта.
Какие случайные данные? О чем Вы? С какого ребута?
Вот так случайно с ребута сгенерировался случайный адрес топика и вот так случайно в него закинулся мусор? Что за бред?
Хотя по теории вероятности и обезьяна может написать "Войну и мир" если потратит на это миллиард миллиардов обезьяно-веков.

Господа, вы решили взять числом? Прикольно. :smile171:
alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05 окт 2021, 13:29
Имя: алексей

Конвертер String >> Boolean

Сообщение alexbonk »

Dryundel писал(а): 07 окт 2021, 21:38 ГОСПОДА, ВЫ РЕШИЛИ ВЗЯТЬ ЧИСЛОМ?
орут обычно когда уже не могут аргументировать :smile110:
Будьте чуть внимательнее, а то еще изобретете велосипед

Отправлено спустя 3 минуты 36 секунд:
Dryundel писал(а): 08 окт 2021, 04:42 адрес топика
эк как вас заклинило то на mqtt.
А если чуть шире глянуть?

Отправлено спустя 3 минуты 38 секунд:
Dryundel писал(а): 08 окт 2021, 04:45 и вот так случайно в него закинулся мусор
именно.
А у нас то что? А у нас же "если не 0, то ставим выход в true".
Вот именно это бред.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Конвертер String >> Boolean

Сообщение rw6cm »

Не пойму о чем здесь спор?
Надо сделать так как нам хочется, или как гласит правило С++
По правилу: "Если значение переменной типа bool есть ненулевым, то оно считается равным true.
Если значение переменной типа bool равно 0, то оно считается равным false."
Какие могут быть претензии???
Если хотите добавить в блок дополнительную опцию, достаточно вежливо попросить.
Win10-64, FLProg (portable)
Аватара пользователя
Dryundel
Полковник
Сообщения: 2437
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 31 раз

Конвертер String >> Boolean

Сообщение Dryundel »

alexbonk писал(а): 08 окт 2021, 04:49 орут обычно когда уже не могут аргументировать
Будьте чуть внимательнее, а то еще изобретете велосипед
А ни кто и не орет. Заметьте, ни одного восклицательного знака. Меня наоборот радует эта дискуссия. Вы приводите свои аргументы, я свои. Это нормально. В споре рождается истина. По поводу велосипеда - явный перегиб с вашей стороны.
alexbonk писал(а): 08 окт 2021, 04:49 эк как вас заклинило то на mqtt.
А если чуть шире глянуть?
Я уже просил вас быть чуть внимательней.
Dryundel писал(а): 07 окт 2021, 16:36 При наличии на входе "0" - на выходе логический ноль.
В других случаях логическая единица.
Актуален при работе с MQTT
alexbonk писал(а): 08 окт 2021, 04:49
Dryundel писал(а): ↑Сегодня{, 04:45}
и вот так случайно в него закинулся мусор
именно.
А у нас то что? А у нас же "если не 0, то ставим выход в true".
Вот именно это бред.
Не надо выдергивать половину предложения из контекста. Это по меньшей мере не вежливо.
rw6cm писал(а): 08 окт 2021, 07:20 По правилу: "Если значение переменной типа bool есть ненулевое, то оно считается равным true.
Если значение переменной типа bool равно 0, то оно считается равным false."
Какие могут быть претензии???
Именно из подобных соображений и делалась логика. Спасибо за дополнительный аргумент.
.
А вообще блок создавался не с потока, а для определенных целей, как дидактический материал в преддверии заполнения вот этого топика Топик #6.

.
Аватара пользователя
Phazz
Полковник
Сообщения: 3129
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 233 раза
Поблагодарили: 114 раз

Конвертер String >> Boolean

Сообщение Phazz »

И что мешает сделать if else? Как это отразится на мк? Подозреваю что практически никак. Ну если у вас такое отношение к критике (хотя сами очень любите критиковать других), то наверно больше не стоит. Раз вы тут один Д'Артаньян. Пусть будет так.
alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05 окт 2021, 13:29
Имя: алексей

Конвертер String >> Boolean

Сообщение alexbonk »

Dryundel писал(а): 08 окт 2021, 08:33 А ни кто и не орет
у вас там выше капслоком же написано.

Отправлено спустя 4 минуты 11 секунд:
Phazz писал(а): 08 окт 2021, 08:33 И что мешает сделать if else?
только тссс не подсказывайте :)
ну нужен кому-то еще один велосипед :)
ну пусть будет так.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2437
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 31 раз

Конвертер String >> Boolean

Сообщение Dryundel »

Phazz писал(а): 08 окт 2021, 08:52 И что мешает сделать if else? Как это отразится на мк? Подозреваю что практически никак.
Вот здесь Вы ошибаетесь.
Если использовать if else, то не получается сделать блок который не создает ни одной дополнительной переменной ни по входу ни по выходу. А теперь представьте что у вас 50 каналов управления. Это +50 переменных String и еще столько же дополнительных boolean. Как Вы думаете, это никак не повлияет на размер проекта? К стати, boolean, если не находится в массиве, занимает 8 бит. Вот такая реальность.
Phazz писал(а): 08 окт 2021, 08:52 Ну если у вас такое отношение к критике (хотя сами очень любите критиковать других), то наверно больше не стоит.
А какое у меня отношение к критике?
На каждый аргумент я отвечаю контраргументом.
Что не так? А как надо?
Phazz писал(а): 08 окт 2021, 08:52 Раз вы тут один Д'Артаньян. Пусть будет так.
Ну раз у вас больше нет аргументов, то действительно, пусть будет так. :)

Отправлено спустя 1 минуту 37 секунд:
[ref]alexbonk[/ref], не стоит переходить на хи-хи. Есть что сказать по делу, давайте будем обсуждать.
Ответить

Вернуться в «Конвертация типов, шифраторы и дешифраторы»

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

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