Страница: 1 | 2 |
Вопрос: Overflow checks.
Добавлено: 25.01.05 16:28
Автор вопроса: Страшный Сон
Я в Anvanced Optimizations флажки вроде поустанавливал, а при переполнении целого числа прога выдает MsgBox (Запускаю екзешник!), в то время как при выходе за границы массива ругается системным сообщением. Значит integer overflow checks остались, или как?
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 25.01.05 20:54
Установка тех флажков убирает проверки...
Если хочешь что-то сделать, делай это сам т.е. On Error ... и вперед...
Номер ответа: 2
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #2
Добавлено: 26.01.05 14:05
Я хочу, чтобы при переполнении переменной прога не вылетала, а продолжала работу с выпонением недопустимых операций, On Error Resume Next не пойдет - так включаются проверки и ошибочные операции пропускаются.
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 26.01.05 21:52
введи 2 и более On Error...
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 26.01.05 21:52
введи 2 и более On Error... и проверяй Err.Number, екли че, то выходи, иначе делай Resume Next
Номер ответа: 5
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #5
Добавлено: 27.01.05 05:31
Странно, у меня всё нормально. В IDE выдаёт переполнение, а в экзешнике нормально отрабатывает. По идее и у тебя так должно быть. Переполнение числа не вызывает исключений, а только установку флага OF (Overflow) в процессоре.
MkOutOfRange &HF000
Sub MkOutOfRange(ByVal Value As Integer)
Value = Value + 33000
MsgBox Value
Value = Value + 70000
MsgBox Value
End Sub
А это я отметил в параметрах компиляции:
Есесно компилировать в Native-код
Дополнительная Оптимизация
==========================
[ ] Не принимать Функции
[X] Удалить Проверку Множества Границ
[X] Удалить Проверку Переполнения Числа
[X] Удалить Проверку Ошибки с плавующей точкой
[ ] Принять Операции с Округленной Плавущей Точкой
[X] Удалить проверку безопасности Pentium(tm) FDIV
Номер ответа: 6
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #6
Добавлено: 29.01.05 13:53
А если все флажки поврубать? У меня просто все стоят. А что делает проверка безопасности Pentium FDIV?
Номер ответа: 7
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #7
Добавлено: 29.01.05 14:15
Нет, попробовал скомпилить с твоими параметрами, все равно этот MsgBox при переполнении появляется. Может что-то еще надо сделать?
Номер ответа: 8
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #8
Добавлено: 29.01.05 14:21
Поставил твою процедуру - оказывается в екзешнике не ругается, а работает правильно. А при переполнении числа LONG почему-то ругается.
Номер ответа: 9
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #9
Добавлено: 29.01.05 14:30
Подставил Long - оказывается не работает Single и Double, то есть не убираются проверки на переполнение у чисел с плавающей точкой. Подставь в свою процедуру Single - будет ругаться.
Номер ответа: 10
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #10
Добавлено: 30.01.05 08:28
Один математик нашел серьезную ошибку в операции FDIV Intel Pentium (первого), Intel подсуетилась и в последующих версиях бажный микрокод пофиксила. Но если предполагается, что программа может работать на этом проце и считать что-то с использованием этой команды, то во избежание ошибок лучше добавить эту проверку.
Номер ответа: 11
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #11
Добавлено: 30.01.05 08:40
Интересная история А ты уверен что имеется ввиду именно инструкция сопроцессора? И как это я не догадался. Думал просто аббревиатура .
Номер ответа: 12
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #12
Добавлено: 30.01.05 09:27
Именно директива. Именно из-за этой ошибки математики считают недоказанной теорему о четырех красках, потому что ее математически свели к 900 с копейками картам, которые потом раскрасили на компе и сказали, что все можно раскрасить. Математики сказали, что там может быть глюк, вспомнили про этот случай (вроде бы, единичный) и успокоились. Раскрашивать вручную никто не рвется, компу не доверяют, но с другой стороны, теорема как бы верна и поэтому всем лень улучшать доказательство до раскрашиваемого вручную числа карт.
Номер ответа: 13
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #13
Добавлено: 31.01.05 18:01
Значит с целочисленными операциями у меня на переполнения прога не ругается, а с операциями с плавающей точкой почему-то ругается, хотя я установил флажок, убирающий на них проверки. Что-то можно сделать?
Номер ответа: 14
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #14
Добавлено: 31.01.05 18:03
А флаг Favor Pentium Pro надо устанавливать?
Номер ответа: 15
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #15
Добавлено: 31.01.05 18:37
Поставь. Ничего не потеряешь Это поддержка модели процессора. Правда как она проявляется я не помню (а если бы и помнил, то смутно ).