Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Исключение при делении на 0 / 6 сообщений из 6, страница 1 из 1
05.08.2011, 07:27
    #37381641
Sitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение при делении на 0
Почему фокс не генерит исключение при делении на 0, а только пишет кучу звездочек в переменную? TRY-CATCH-ем исключение не ловится. И даже не понятно как программно определить что там было деление на 0 и в переменной звездочки(так выглядит содержимое переменной в дебагере)
...
Рейтинг: 0 / 0
05.08.2011, 07:52
    #37381660
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение при делении на 0
Ошибка будет если попытаться сохранить в таблицу это значение.
Определять надо заранее, перед делением проверяй что знаменатель не равен нулю.
...
Рейтинг: 0 / 0
05.08.2011, 08:57
    #37381712
Sitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение при делении на 0
Это понятно. Просто тут распарсиваются значения, которые собираются в строку, которая выполняется макроподстановкой. И при проверке каждого значения на 0, задача усложняется в разы.
Проблемму решил конвертацией получившегося значения в строку, и проверкой первого символа на равность '*'(звездочке), но это же такие кастыли блин.

А почему фокс не генерит исключений, при делении на 0? Я не знаю ни одного языка, который бы не генерил исключение, при делении на 0.
...
Рейтинг: 0 / 0
05.08.2011, 09:14
    #37381727
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение при делении на 0
SitrА почему фокс не генерит исключений, при делении на 0?
ХЗ, так разработчики фокса решили, всегда так было.
Звездочки означают переполнение, которое возникает не только при делении на ноль, но и при попытке записать число в поле, в которое оно не влазит. Например:
Код: plaintext
? str( 1000 ,  3 )

Считай звездочки одним из возможных значений и проверяй сравнив с ним же:
Код: plaintext
1.
2.
3.
a =  1000  /  0 
if a =  1 / 0 
  ? 'Переполнение'
endif
...
Рейтинг: 0 / 0
05.08.2011, 09:43
    #37381776
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение при делении на 0
SitrПроблемму решил конвертацией получившегося значения в строку, и проверкой первого символа на равность '*'(звездочке)

Проще вычитанием: если число-число не равно нулю, значит переполнение
...
Рейтинг: 0 / 0
05.08.2011, 10:10
    #37381837
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение при делении на 0
Можно попробовать использовать функции, деление на ноль в которых генерит ошибку. Например MOD(). А вызов этой функции "обернуть" в evl()

Код: plaintext
1.
2.
3.
4.
myVar =  1 
?evl(myVar, MOD( 1 ,myVar))

myVar =  0 
?evl(myVar, MOD( 1 ,myVar))

В принципе, можно просто переопределять переменную через эту функцию

Код: plaintext
myVar = evl(myVar, MOD( 1 ,myVar))
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Исключение при делении на 0 / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]