Страница 3 из 4

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

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

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

GetNumberWord(25.8,array('градус','градуса','градусов'))--> ?

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

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

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

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

Добавлено: Вс авг 26, 2018 1:19 am
xor
Попробуйте
GetNumberWord(-25,array('градус','градуса','градусов'))
GetNumberWord(25.8,array('градус','градуса','градусов'))

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

Добавлено: Вс авг 26, 2018 1:28 am
fandaymon
xor писал(а):
Вс авг 26, 2018 1:19 am
Попробуйте
GetNumberWord(-25,array('градус','градуса','градусов'))
GetNumberWord(25.8,array('градус','градуса','градусов'))
25.8 вроде правильно возвращает - градусов
А с минусовой температурой надо abs делать

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

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

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

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

п.с. надо б функциями своими пообмениваться, с описанием что зачем
в тлг писал про фильтры, выхлоп существенный
т.е. даже не сама функция, а изменился подход/хранение данных, построение с них графиков и т.д.

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

Добавлено: Вс авг 26, 2018 1:43 am
xor
:D https://majordomo.smartliving.ru/forum/ ... 53#pr85942
обновил для работы с отрицательными числами

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

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

нет ли способа в один код запихать несколько "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);

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

Добавлено: Вт авг 28, 2018 1:10 am
xor
чего-то шаманство какое-то.
Так то проще же -

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

say('температура воды - '.mynum2str($W,'градус','градуса','градусов',0).', температура масла - '.mynum2str($O,'градус','градуса','градусов',0),2);
- и с тире и от движка не зависит, если надо отрицатетельное число озвучит, но для этой задачи- да, вода меньше 0 не бывает.
А для температуры воздуха зимой другую функцию будете использовать или для проговаривания не забудите по модулю взять?

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

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

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

say('температура воды - '.mynum2str($W,'градус','градуса','градусов',0).', температура масла - '.mynum2str($O,'градус','градуса','градусов',0),2);
А для температуры воздуха зимой другую функцию будете использовать или для проговаривания не забудите по модулю взять?
Так вообще ничего не говорит, до зимней температуры я ещё не добрался :D умный дом пока валяется на столе на работе, а настоящий дом ещё строится, ну к тому времени думаю уже поднатаскаюсь

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

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