|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.11.2021, 20:02 | #1 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
О сколько нам открытий чудных.. или о делении на 0 в Delphi без ошибки и в Lazaus с ошибкой
Давно уже пишу на Delphi, но до сих пор бывают открытия.
Код Код:
Правда, если в Delphi добавить после деления Код:
В чем там разница? Пробовал {$Q+} или {$Q-} - ничего не меняется. |
14.11.2021, 20:06 | #2 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,501
|
|
14.11.2021, 20:14 | #3 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
|
14.11.2021, 21:56 | #4 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 627
|
Ну пример из кода слишком "учебный"=)
А в практической задаче в чем проблема вставить перед делением проверку? Код:
|
14.11.2021, 22:20 | #5 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Интересно было бы пройти в режиме отладки. Может, компилятор умный и выбрасывает этот оператор? А если нет - то что в этом самом а после операции ?
А вообще, по-моему, эксперименты типа "если нельзя, но хочется" - бессмыслены по сути. Это как искать систему в конвульсиях убитого тореадором быка. Не люблю корриду и испанцев, которые её любят. |
14.11.2021, 22:28 | #6 | |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Цитата:
Написал небольшой код на Дельфы для проверки быстродействия, там куча циклов с простыми операциями, типа Код:
Не обратил внимание на возможность деления на 0, в Дельфы все прокатило, а потом решил а Лазарусе - а там - оба-на, переполнение. Потом конечно вставил проверку Код:
Код:
Delphi ( без проверки =0 ) 0.17 сек Delphi ( с проверкой =0 ) 1.39 сек Lazarus ( с проверкой =0 ) 12.16 сек Тоже загадка, почему такая разница Дельфы и Лазарус. Кстати не всегда, другие тесты примерно одинаково. |
|
14.11.2021, 22:30 | #7 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
|
14.11.2021, 22:36 | #8 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,501
|
Это могло быть шуткой, только грустной.
как буд-то с делфи 7 не имели опыта работы, если это на полном серьёзе )) Просто у компилятора не возникло проблем с делением на ноль, взял и поделил. А в чём собсвенно должна быть проблема? Это же даже не математическая операция А функция http://www.delphibasics.ru/Div.php Перепешите её под себя, будет ошибку выдавать, если добавите условие которое вам надо )) Память выделенную под переменную откройте и посмотрите что там внутри. как вариант http://www.delphibasics.ru/FloatToStr.php http://www.delphibasics.ru/FloatToStrF.php поиграться с выводом, если ошибка, то нужно уже к памяти обращаться под переменной, посмотреть что там )) Ещё к паскалю в синем экране можно было бы придраться, почему он переменные сам не обнуляет )) |
14.11.2021, 22:39 | #9 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
|
14.11.2021, 22:43 | #10 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,501
|
да я перечитал и откорректировал сообщение,
http://www.delphibasics.ru/PInt64.php вот держи по указателям ссылку Когда-то делфи 7 такой объёмной казалась, а сейчас смотрится как небольшая, вероятно даже компоненты уже ничем не помогают ей )) |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывести на экран 1 или 0 в зависимости от того, имеют три заданных целых числа одинаковую четность или нет. Delphi. Проверить задачу на ошибки | student_23 | Помощь студентам | 3 | 27.01.2017 09:45 |