Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: hw.t-k.ru
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 26.01.05 21:52
введи 2 и более On Error...

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 26.01.05 21:52
введи 2 и более On Error... и проверяй Err.Number, екли че, то выходи, иначе делай Resume Next

Ответить

Номер ответа: 5
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #10
Добавлено: 30.01.05 08:28
А что делает проверка безопасности Pentium FDIV?

Один математик нашел серьезную ошибку в операции FDIV Intel Pentium (первого), Intel подсуетилась и в последующих версиях бажный микрокод пофиксила. Но если предполагается, что программа может работать на этом проце и считать что-то с использованием этой команды, то во избежание ошибок лучше добавить эту проверку.

Ответить

Номер ответа: 11
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #11
Добавлено: 30.01.05 08:40
 Интересная история :) А ты уверен что имеется ввиду именно инструкция сопроцессора? И как это я не догадался. Думал просто аббревиатура :).

Ответить

Номер ответа: 12
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: basicproduction.nm.ru
 Профиль | | #15
Добавлено: 31.01.05 18:37
Поставь. Ничего не потеряешь :) Это поддержка модели процессора. Правда как она проявляется я не помню (а если бы и помнил, то смутно :)).

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам