VB6: что является вероятной причиной ошибки переполнения при использовании строк? - PullRequest
0 голосов
/ 06 сентября 2010

Какова вероятная причина ошибки переполнения в VB6?Я использую строки, когда это происходит.

Это RAM или пространство на жестком диске?Или это что-то внутреннее для VB6?

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010

Я собираюсь сделать здесь удар в темноте, какой-то код поможет, как сказал Хоган. Обычно ошибка переполнения возникает в строке, когда VB6 имеет дело с целым или длинным в математических формулах, а результаты слишком велики, чтобы их можно было хранить целым или длинным.

В зависимости от характера вашей формулы вы можете избежать проблемы, заставив систему использовать числа в качестве числа с плавающей запятой, добавив в конце «.0». В противном случае используйте различные функции Cxxx для явного преобразования чисел. к типу, который имеет больший диапазон.

Единственное, что вы учитываете, это то, что числа с плавающей запятой менее точны, чем целые числа, поэтому убедитесь, что вы не потеряете необходимую точность при преобразовании.

1 голос
/ 07 сентября 2010

Еще один «удар», так как код не указан ...

Следующее приведет к ошибке переполнения:

Dim x as integer
x = len(longstring)   'longstring over 32,768 characters in length

Причинет ошибку переполнения.

Dim x as long
x = len(longstring)   'longstring over 32,768 characters in length

Работает нормально.

Еще один пример переполнения из службы поддержки Microsoft здесь :

РЕДАКТИРОВАТЬ

Ещетонкая ситуация, которая может застать вас врасплох:

Вы пытаетесь использовать число в расчете, и это число приводится к целому числу, но результат больше целого числа.

Dim x As Long
x = 2000 * 365 ' Error: Overflow

Чтобы обойти эту ситуацию, введите число, например:

Dim x As Long
x = CLng(2000) * 365
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...