Opération arithmétique a entraîné un dépassement de capacité
Lorsque j'envoie:
Result = CInt(NetApiBufferFree(pBuffer))
Je reçois (QUELQUES FOIS) cette erreur:
Arithmetic operation resulted in an overflow.
Ce que cela signifie exactement? et comment je peux le résoudre?
OriginalL'auteur Lefteris Gkinis | 2010-11-30
Vous devez vous connecter pour publier un commentaire.
Cela signifie que
CInt
argument est hors de portée deInteger
, -0x80000000 à 0x7FFFFFFFEt il arrive quand
NetApiBufferFree
renvoie une erreur: les codes d'erreur sont plus grandes que 0x80000000.Il n'est pas non signé int32 type, afin de l'utiliser
CLng
au lieu deCInt
.Sur la source de l'erreur. Vous devriez trouver le code d'erreur que vous obtenez: call MsgBox ou de l'enregistrer dans un fichier, ou d'utiliser un point d'arrêt. Suivant sa description. Si cela ne vous aidera pas (par exemple l'erreur serait E_FAIL), ajoutez le code pour vérifier que
pBuffer
valeur est valide - que ce n'était pas modifiée par quelque chose, et n'a pas été déjà libérés. Ajouter la journalisation pourNetApiBuffer*
appels.Result
est effectivement déclarée comme uneLong
. En outre tour surOption Strict
de sorte que le compilateur vous avertit lorsque vous vous pourraient être vulnérables à ce genre de chose.Chers Abyx merci beaucoup pour votre réponse précise, mais ce n'est pas me pointer à la source de mon problème, je veux dire par la que ce que j'ai à faire pour gérer cette erreur? Pour le moment j'ai de suspendre l'instruction de la mémoire Tampon Gratuit jusqu'à ce que je vois comment le gérer. Pouvez-vous m'aider sur ce point?
Ne pas manipuler - le fixer!
OriginalL'auteur Abyx
Meilleure réponse est de remplacer "double", à la place de "Int16/Int32/Int64'
quelques fois le fichier de conversion des nombres énormes.. double n'a jamais portée maximale.
OriginalL'auteur Chiranjeevi Bhoosarapu