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

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

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

Проще вычитанием: если число-число не равно нулю, значит переполнение
...
Рейтинг: 0 / 0
Исключение при делении на 0
    #37381837
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать использовать функции, деление на ноль в которых генерит ошибку. Например 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
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Исключение при делении на 0
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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