Вверх ↑
Этот топик читают: Гость
Ответов: 205
Рейтинг: 44
#1: 2010-06-18 04:00:49 ЛС | профиль | цитата
При создании элемента для своего пакета наткнулся на проблему.
При компиляции ругается на приведённую ниже строчку.


#cpp
lang (fTimer:int)
fTimer=fck/256/(1/(Interval/1000)) <----- ?

Interval-свойство элемента(от 1 до...).
fck-глобальная переменная.
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#2: 2010-06-18 10:58:51 ЛС | профиль | цитата
Вообще-то Division by zero в переводе с английского -- деление на 0, вот и проверяй, где может возникнуть такое, например поставь дебаги для вывода в консоль значения переменных
карма: 10
0
Администрация
Ответов: 15295
Рейтинг: 1519
#3: 2010-06-18 15:10:32 ЛС | профиль | цитата
wss60 писал(а):
Interval/1000

оператор деления возвращает в качестве результата выражение с типом, равным типу первого операнда. Поскольку Interval - операнд с типом Integer то после его деления на 1000 результат округляется до ближайшего целого - нуля.
карма: 27
0
Ответов: 205
Рейтинг: 44
#4: 2010-06-18 17:23:57 ЛС | профиль | цитата


@Interval=Интервал (в миллисекундах) между итерациями таймера|7|1000

Изменил Interval в свойстве элемента на тип Real (Число с плавающей точкой) всё равно ошибка.

Пробовал так:


#cpp
fTimer=fck/256/(1/(1/1000))
ошибка!

Если так:

#cpp
fTimer=fck/256/(1/(1000/1000))
все норм.
карма: 0

0
файлы: 1code_18920.txt [134B] [323]
Администрация
Ответов: 15295
Рейтинг: 1519
#5: 2010-06-18 17:33:11 ЛС | профиль | цитата
wss60, еще раз:
Dilma писал(а):
оператор деления возвращает в качестве результата выражение с типом, равным типу первого операнда

#hws
fTimer=fck/256/(1/(Interval/1000))
Interval - тип real, итог выражения Interval/1000 - число с типом real, назовем его А. Получаем
#hws
fTimer=fck/256/(1/А)
1 - число типа integer, итог выражения 1/А - число типа integer. И далее все деления это числа типа integer

однако я не очень понимаю скрытый смысл в записи простой дроби через сотню знаков деления... Почему нельзя записать по человечески?
#hws
fTimer=1000.0 * fck/(256 * Interval)

карма: 27
1
Голосовали:wss60
Ответов: 205
Рейтинг: 44
#6: 2010-06-18 17:51:27 ЛС | профиль | цитата
Dilma, разобрался.Спасибо!!!

В 4 часа утра лучше спать чем формулы выводить
карма: 0

0
6
Сообщение
...
Прикрепленные файлы
(файлы не залиты)