2010-11-30 11 views

Répondre

9

Cela signifie que l'argument CInt est hors de portée de Integer, -0x80000000 à 0x7FFFFFFF Et il arrive quand NetApiBufferFree renvoie une erreur: les codes d'erreur sont plus grandes que 0x80000000. Il n'y a pas de type int32 non signé, utilisez CLng au lieu de CInt.


À propos de la source d'erreur. Vous devriez trouver le code d'erreur que vous obtenez: appelez MsgBox ou enregistrez-le dans un fichier, ou utilisez le point d'arrêt. Suivant trouver sa description. Si cela ne vous aide pas (par exemple erreur serait E_FAIL), ajoutez le code pour vérifier que la valeur pBuffer est valide - qu'elle n'a pas été modifiée par quelque chose, et n'a pas déjà été libérée. Ajoutez la journalisation pour les appels NetApiBuffer*.

+0

+1. Assurez-vous également que 'Result' est effectivement déclaré' Long'. En outre, activez 'Option Strict' pour que le compilateur vous avertisse quand vous pourriez être vulnérable à ce genre de chose. – MarkJ

+0

Cher Abyx merci beaucoup pour votre réponse qui précise mais il ne me pointe pas à la source de mon problème, je veux dire par là ce que je dois faire pour gérer cette erreur? Pour l'instant j'ai suspendu l'instruction pour Buffer Free jusqu'à ce que je vois comment le gérer. Pouvez-vous m'aider à ce sujet? –

+0

Ne le manipule pas - répare-le! –

1

Meilleure réponse est de remplacer 'double' à la place de 'Int16/Int32/Int64'

une conversion de fichier prend parfois un très grand nombre .. doubler jamais a une portée maximale.