Конвертер String >> Boolean
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Конвертер String >> Boolean
Конвертер String >> Boolean
. .
Конвертирует строковую переменную в Boolean.
При наличии на входе "0" - на выходе логический ноль.
В других случаях логическая единица.
Актуален при работе с MQTT
Расширенная версия блока
. .
В расширенной версии добавлен параметр выбора логики:
- В случае проверки на ноль, - при "0" на входе, на выходе будет логический ноль,
во всех других случаях на выходе будет логическая единица.
- В случае проверки на единицу, - при "1" на входе, на выходе будет логическая единица,
во всех других случаях на выходе будет логический ноль.
Блок не создает дополнительных переменных и имеет короткий код.
Спасибо всем, кто принял участие в дискуссии.
.
. .
Конвертирует строковую переменную в Boolean.
При наличии на входе "0" - на выходе логический ноль.
В других случаях логическая единица.
Актуален при работе с MQTT
Расширенная версия блока
. .
В расширенной версии добавлен параметр выбора логики:
- В случае проверки на ноль, - при "0" на входе, на выходе будет логический ноль,
во всех других случаях на выходе будет логическая единица.
- В случае проверки на единицу, - при "1" на входе, на выходе будет логическая единица,
во всех других случаях на выходе будет логический ноль.
Блок не создает дополнительных переменных и имеет короткий код.
Спасибо всем, кто принял участие в дискуссии.
.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Dryundel 08 окт 2021, 12:55, всего редактировалось 1 раз.
- Phazz
- Полковник
- Сообщения: 3129
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 233 раза
- Поблагодарили: 114 раз
Конвертер String >> Boolean
Наверное лучше будет если 0 это 0 а 1 это 1. Тем более включать 1 при любых данных вообще не очень решение
- Rovki
- Полковник
- Сообщения: 5726
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Конвертер String >> Boolean
Согласен . А то кто то матюкнется и включится обогрев , свет.Phazz писал(а): 07 окт 2021, 18:42 Наверное лучше будет если 0 это 0 а 1 это 1. Тем более включать 1 при любых данных вообще не очень решение

и не совсем понятно что значит "0" в стринге , слово что ли , или отсутствие символов ? И почему нельзя использовать штатное сравнение строк ?
Электронщик до мозга костей и не только
-
- Капитан
- Сообщения: 908
- Зарегистрирован: 04 окт 2015, 19:10
- Откуда: Новосибирск
- Имя: Павел
- Благодарил (а): 20 раз
- Поблагодарили: 22 раза
Конвертер String >> Boolean
При таком решении я бы проверял на единицу, по мне так логичнее.
(<S> == "1") ? 1 : 0
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Конвертер String >> Boolean
Не согласен.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
Как раз в логике boolean 1 это 1 или true. А вот 0 это все что не 1. Если например из integer в bool
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Конвертер String >> Boolean
Какой смысл переводить integer в bool ?Phazz писал(а): 07 окт 2021, 20:21 Как раз в логике boolean 1 это 1 или true. А вот 0 это все что не 1. Если например из 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
А я упоминал что:
Ну так вот в этом случае, одной переменной мы можем управлять сразу двумя устройствами - включателем и диммером.
Пришло "50" - включатель включился, диммер выставился на 50%
Пришло "80" - включатель включился, диммер выставился на 80%
Пришло "0" - включатель выключился, что с диммером уже без разницы. .
Вот исходя из этих мелочей и принималось решение задействованной логики.
.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Rovki
- Полковник
- Сообщения: 5726
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Конвертер String >> Boolean
А зачем тогда при шиме =0 выключатель ? Для гальванической развязки ? Обычно делают шим ,у которого при уставке 0 ,на выходе нет импульсов(напряжение 0) , а при 100% нет пауз ( напряжение максимальное) , во всех других случаях длительность импульса пропорциональна уставке( лучше не линейная зависимость для освещения).
Электронщик до мозга костей и не только
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Конвертер String >> Boolean
А затем, что бы обесточить высоковольтную часть прибора. Убедительно?

Если да, то дальнейшая часть реплики вероятно отпадает.

Мне нравятся все эти правильные вопросы. Всегда рад, аргументированно отвечать за свою работу.

Неужели не убедил?
Готов выслушать Ваши аргументы.
Конвертер String >> Boolean
чтобы в флпрог возможно было подать bool на вход, где требуется именно bool на входе.
И по другому никак))))
или вы можете предложить решение как можно на булеан-вход подать сразу интеджер? думаю не можете.
Отправлено спустя 3 минуты 12 секунд:
что мешает слать в этом случае "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
[ref]Dryundel[/ref], вам уже ответили, случайные данные могут включить например свет
Конвертер String >> Boolean
например в момент ребута.
особенно интересно будет если стринг в это время прилетает из юарта.
логика видать такая:
но ведь там же не 0? нет! а что там? мусор! ок, если там не 0, тогда включаем выход в 1....



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

Конвертер String >> Boolean
орут обычно когда уже не могут аргументировать

Будьте чуть внимательнее, а то еще изобретете велосипед
Отправлено спустя 3 минуты 36 секунд:
эк как вас заклинило то на mqtt.
А если чуть шире глянуть?
Отправлено спустя 3 минуты 38 секунд:
именно.
А у нас то что? А у нас же "если не 0, то ставим выход в true".
Вот именно это бред.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Конвертер String >> Boolean
Не пойму о чем здесь спор?
Надо сделать так как нам хочется, или как гласит правило С++
По правилу: "Если значение переменной типа bool есть ненулевым, то оно считается равным true.
Если значение переменной типа bool равно 0, то оно считается равным false."
Какие могут быть претензии???
Если хотите добавить в блок дополнительную опцию, достаточно вежливо попросить.
Надо сделать так как нам хочется, или как гласит правило С++
По правилу: "Если значение переменной типа bool есть ненулевым, то оно считается равным true.
Если значение переменной типа bool равно 0, то оно считается равным false."
Какие могут быть претензии???
Если хотите добавить в блок дополнительную опцию, достаточно вежливо попросить.
Win10-64, FLProg (portable)
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Конвертер String >> Boolean
А ни кто и не орет. Заметьте, ни одного восклицательного знака. Меня наоборот радует эта дискуссия. Вы приводите свои аргументы, я свои. Это нормально. В споре рождается истина. По поводу велосипеда - явный перегиб с вашей стороны.alexbonk писал(а): 08 окт 2021, 04:49 орут обычно когда уже не могут аргументировать
Будьте чуть внимательнее, а то еще изобретете велосипед
Я уже просил вас быть чуть внимательней.
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
И что мешает сделать if else? Как это отразится на мк? Подозреваю что практически никак. Ну если у вас такое отношение к критике (хотя сами очень любите критиковать других), то наверно больше не стоит. Раз вы тут один Д'Артаньян. Пусть будет так.
Конвертер String >> Boolean
у вас там выше капслоком же написано.
Отправлено спустя 4 минуты 11 секунд:
только тссс не подсказывайте

ну нужен кому-то еще один велосипед

ну пусть будет так.
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Конвертер String >> Boolean
Вот здесь Вы ошибаетесь.Phazz писал(а): 08 окт 2021, 08:52 И что мешает сделать if else? Как это отразится на мк? Подозреваю что практически никак.
Если использовать if else, то не получается сделать блок который не создает ни одной дополнительной переменной ни по входу ни по выходу. А теперь представьте что у вас 50 каналов управления. Это +50 переменных String и еще столько же дополнительных boolean. Как Вы думаете, это никак не повлияет на размер проекта? К стати, boolean, если не находится в массиве, занимает 8 бит. Вот такая реальность.
А какое у меня отношение к критике?Phazz писал(а): 08 окт 2021, 08:52 Ну если у вас такое отношение к критике (хотя сами очень любите критиковать других), то наверно больше не стоит.
На каждый аргумент я отвечаю контраргументом.
Что не так? А как надо?
Ну раз у вас больше нет аргументов, то действительно, пусть будет так.

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