Арифметическая операция привела к переполнению - PullRequest
3 голосов
/ 30 ноября 2010

Когда я отправляю:

Result = CInt(NetApiBufferFree(pBuffer))

Я получаю (НЕКОТОРЫЕ РАЗ) эту ошибку:

Arithmetic operation resulted in an overflow.

Что именно это означает? и как я могу решить это?

Ответы [ 2 ]

10 голосов
/ 30 ноября 2010

Это означает, что аргумент CInt находится вне диапазона Integer, от -0x80000000 до 0x7FFFFFFF. И это происходит, когда NetApiBufferFree возвращает ошибку: коды ошибок больше 0x80000000.

Неттип unsigned int32, поэтому используйте CLng вместо CInt.


Об источнике ошибки.Вы должны узнать код ошибки, который вы получаете: вызвать MsgBox или записать его в файл, или использовать точку останова.Далее найдите его описание.Если это вам не поможет (например, ошибка будет E_FAIL), добавьте код, чтобы проверить, что значение pBuffer является действительным - что оно не было изменено чем-то и еще не было освобождено.Добавить запись для NetApiBuffer* звонков.

1 голос
/ 22 октября 2013

Лучший ответ - заменить 'double' вместо 'Int16 / Int32 / Int64'

. Иногда преобразование файлов занимает огромные числа ... double никогда не имеет максимального диапазона.

...