[Код] Примеры синтаксиса кода

Описание кода без конкретной привязки

Модераторы: immortal, newz20

Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Примеры синтаксиса кода

Сообщение xor » Вс авг 26, 2018 1:01 am

fandaymon писал(а):
Вс авг 26, 2018 12:54 am
Самое смешное, что давно уже есть встроенная функция для склонения чисел - GetNumberWord().

GetNumberWord($x,array('день','дня','дней'))
GetNumberWord($x,array('градус','градуса','градусов'))
Самое смешное, что появление новых функций не анонсируется и отсутствует в доках((

GetNumberWord(25.8,array('градус','градуса','градусов'))--> ?
Последний раз редактировалось xor Вс авг 26, 2018 1:11 am, всего редактировалось 1 раз.
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Примеры синтаксиса кода

Сообщение fandaymon » Вс авг 26, 2018 1:05 am

xor писал(а):
Вс авг 26, 2018 1:01 am
fandaymon писал(а):
Вс авг 26, 2018 12:54 am
Самое смешное, что давно уже есть встроенная функция для склонения чисел - GetNumberWord().

GetNumberWord($x,array('день','дня','дней'))
GetNumberWord($x,array('градус','градуса','градусов'))
Самое смешное, что появление новых функций не анонсируется и отсутствует в доках((
Ну это да, тут не поспоришь... Только время от времени посматривать по файлам в директории lib - что появилось, как реализовано
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Примеры синтаксиса кода

Сообщение xor » Вс авг 26, 2018 1:19 am

Попробуйте
GetNumberWord(-25,array('градус','градуса','градусов'))
GetNumberWord(25.8,array('градус','градуса','градусов'))
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Примеры синтаксиса кода

Сообщение fandaymon » Вс авг 26, 2018 1:28 am

xor писал(а):
Вс авг 26, 2018 1:19 am
Попробуйте
GetNumberWord(-25,array('градус','градуса','градусов'))
GetNumberWord(25.8,array('градус','градуса','градусов'))
25.8 вроде правильно возвращает - градусов
А с минусовой температурой надо abs делать
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Примеры синтаксиса кода

Сообщение Logrus » Вс авг 26, 2018 1:40 am

fandaymon писал(а):
Вс авг 26, 2018 12:54 am
Самое смешное, что давно уже есть встроенная функция для склонения чисел - GetNumberWord().

GetNumberWord($x,array('день','дня','дней'))
GetNumberWord($x,array('градус','градуса','градусов'))
тема не новые функции в мдм, а примеры, коих много набросали
и в комментах по ссылке про это говорили ;)

я изменения просматриваю )))

п.с. надо б функциями своими пообмениваться, с описанием что зачем
в тлг писал про фильтры, выхлоп существенный
т.е. даже не сама функция, а изменился подход/хранение данных, построение с них графиков и т.д.
Последний раз редактировалось Logrus Вс авг 26, 2018 1:47 am, всего редактировалось 1 раз.
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Примеры синтаксиса кода

Сообщение xor » Вс авг 26, 2018 1:43 am

:D https://majordomo.smartliving.ru/forum/ ... 53#pr85942
обновил для работы с отрицательными числами
За это сообщение автора xor поблагодарил:
ZyaK (Пн авг 27, 2018 7:17 am)
Рейтинг: 1.16%
ZyaK
Сообщения: 407
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 45 раз
Поблагодарили: 69 раз

Re: Примеры синтаксиса кода

Сообщение ZyaK » Пн авг 27, 2018 7:15 am

Ладно, со склонениями градусов разобрался, осталось понять почему говорит температура воды тридцать градусов, температура масла ДВАДЦАТИ ДЕВЯТИ градусов, пробовал датчик нагревать
говорит температура воды тридцать один градус, температура масла ТРИДЦАТИ ОДНОГО градус.
то есть склоняет правильно, а вот числа говорит не так как надо.

нет ли способа в один код запихать несколько "Say" с какой нибудь задержкой?
типа
получить температуру воды, вставить правильное окончание
Say температура воды
получить температуру масла, вставить правильное окончание
Say температура масла
и тд...

если пишу так, то числа говорит правильно "температура воды тридцать, температура масла двадцать девять"

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

 
 $O=gg("Котел.Oil_actual");
 $W=gg("Котел.Water_actual");
 $P=gg("Котел.Pressure");
Say("температура ". "воды ". $W ."". ", температура ". "масла ".  $O ,2);
//}

Ура!!! победил!!! надо ей точки и запятые походу ставить, только с ними нормально заговорила

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

Say('Температура воды'.' '. $W.' '. GetNumberWord($W,array('градус.','градуса.','градусов.')) .' '. "Масла".' '.  $O.' '. GetNumberWord($O,array('градус','градуса','градусов')),2);
или вот с тире, тире не произносит :)

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

Say('Температура воды'. '- '. $W. ' '. GetNumberWord($W,array('градус.','градуса.','градусов.')). ' '. "Температура масла". '- '. $O. ' '. GetNumberWord($O,array('градус.','градуса.','градусов.')). ' '. "Давление". '- '. $P. ' '. GetNumberWord($P,array('килограмм.','килограмма.','килограммов.')),2);
PI2 + MQTT + 5 ESP8266 + Atmega16
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Примеры синтаксиса кода

Сообщение xor » Вт авг 28, 2018 1:10 am

чего-то шаманство какое-то.
Так то проще же -

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

say('температура воды - '.mynum2str($W,'градус','градуса','градусов',0).', температура масла - '.mynum2str($O,'градус','градуса','градусов',0),2);
- и с тире и от движка не зависит, если надо отрицатетельное число озвучит, но для этой задачи- да, вода меньше 0 не бывает.
А для температуры воздуха зимой другую функцию будете использовать или для проговаривания не забудите по модулю взять?
ZyaK
Сообщения: 407
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 45 раз
Поблагодарили: 69 раз

Re: Примеры синтаксиса кода

Сообщение ZyaK » Вт авг 28, 2018 6:25 am

xor писал(а):
Вт авг 28, 2018 1:10 am
Так то проще же -

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

say('температура воды - '.mynum2str($W,'градус','градуса','градусов',0).', температура масла - '.mynum2str($O,'градус','градуса','градусов',0),2);
А для температуры воздуха зимой другую функцию будете использовать или для проговаривания не забудите по модулю взять?
Так вообще ничего не говорит, до зимней температуры я ещё не добрался :D умный дом пока валяется на столе на работе, а настоящий дом ещё строится, ну к тому времени думаю уже поднатаскаюсь
PI2 + MQTT + 5 ESP8266 + Atmega16
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Примеры синтаксиса кода

Сообщение xor » Ср авг 29, 2018 1:54 am

ZyaK писал(а):
Вт авг 28, 2018 6:25 am
Так вообще ничего не говорит, до зимней температуры я ещё не добрался :D умный дом пока валяется на столе на работе, а настоящий дом ещё строится, ну к тому времени думаю уже поднатаскаюсь
Чтобы так заговорила, нужно функции mynum2str и morph поместить в файл своих функций типа \htdocs\lib\my_funcs.php и рестарт МЖД
Ответить