Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Забавно VB6 глючит: (1024 * 768) * 3 = Overflow

5.1K
15 августа 2007 года
12345678
93 / / 16.12.2006
Понадобилось мне подщитать размер битмапа в байтах. Я обьявил переменную типа Long и попытался выполнить следующее:

 
Код:
Dim r As Long
r = (1024 * 768) * 3
...


На выделенную строчку VB6 вежливо сказал: Runtime-error '6': Overflow.
Удивлению моему небыло границ... Тогда я немного переставил ход событий:

 
Код:
Dim r As Long

r = 1024
r = r * 768
r = r * 3
...


К моему удивлению операция прошла успешно. Но все же может я в чем то ошибся и може кто сталкивался с такой проблемой поделиться опытом? Все таки не очень удобно расписывать подобные арефметические выражения показанным выше образом.
2.0K
15 августа 2007 года
WidowMaker
212 / / 05.04.2005
Тк. все мои познания о VB касаются VBA, то возможно это и не правильно....
Порылся в справке и нашел, что результат выражения будет иметь тип операнда имеющего самый емкий тип (ну и товтология). А как ему узнать что за тип у твоих констант? Я не нашел какой тип используется по умолчанию для констант, но из примера можно предположить что int16,т.е. переполнение у тебя происходит еще в скобках. Для этого можно использовать "спецификатор" типа Long (&):
 
Код:
Dim r As Long
r=1024 * [COLOR=red]768&[/COLOR] *3;
5.1K
15 августа 2007 года
12345678
93 / / 16.12.2006
Ааа, тогда понятно. Действительно, если указать VB6 что числа типа Long то он воспринимает ето коректно. Спасибо за хорошее разяснение! :)
280
16 августа 2007 года
ВуД™
326 / / 04.01.2006
r = (1024& * 768&) * 3&
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог