VB6 Преобразование длинных в целочисленные переполнения - PullRequest
0 голосов
/ 28 сентября 2011

Я пытаюсь преобразовать long в целое число. Я считаю, что значение long достаточно мало, чтобы поместиться в диапазон целого числа.

У меня есть код:

'mapdc is a long
Debug.Print mapdc
Debug.Print CInt(mapdc)

Первая строка работает нормально. Он выводит 1107367444. Однако вторая строка вызывает ошибку переполнения.

Есть идеи? СПАСИБО !!!!

Ответы [ 3 ]

7 голосов
/ 28 сентября 2011

Тип данных VB6 Integer - 16-битный. Вы вызываете переполнение: значение mapdc больше 32,767, которое выходит за пределы диапазона значений, поддерживаемых переменной Integer. Для получения дополнительной информации о типах данных VB6 см. эту страницу MSDN .

5 голосов
/ 28 сентября 2011

Диапазон типа VB6 Integer составляет от -32 768 до 32 767.Очевидно, что ваше значение выходит за пределы этого диапазона и переполняется.

Типы данных - учебное пособие по VB 6

MSDN Подтверждает, говоря, что целое число VB6 соответствует типу .NETInt16, который имеет тот же диапазон:

Целочисленный тип данных для пользователей Visual Basic 6.0

3 голосов
/ 28 сентября 2011

Int в VB6 - 16 бит (диапазон от -32 768 до 32 767). Эта ссылка обеспечивает сравнение VB6 с эквивалентами .Net

...