2010-11-30 18 views
2

の結果:まさにそれを意味何算術演算がオーバーフロー

Arithmetic operation resulted in an overflow. 

Result = CInt(NetApiBufferFree(pBuffer)) 

は、私は、このエラー(SOME TIMES)を受信しますか?どのように私はそれを解決することができますか?

答えて

9

それはCInt引数は0x7FFFFFFFで にInteger、-0x80000000の範囲外であることを意味し、エラーを返しNetApiBufferFreeときに起こる:エラーコードが0x80000000のよりも大きいです。

符号なしint32型はありませんので、CIntの代わりにCLngを使用してください。


エラーの原因についてMsgBoxを呼び出すか、ファイルに記録するか、ブレークポイントを使用すると、エラーのコードを知る必要があります。次に、その説明を見つけます。それが助けにならない場合は(たとえばエラーはE_FAIL)、pBufferの値が有効であることを確認するコードを追加します。何かによって修正されておらず、まだ解放されていません。 NetApiBuffer*コールのログを追加します。

+0

+1。また、 'Result'が' Long'として実際に宣言されていることを確認してください。さらに、 'Option Strict'を有効にして、コンパイラがあなたにこの種の脆弱性を警告するようにします。 – MarkJ

+0

親愛なるアビックスはあなたの答えには本当にありがとうございました。私の問題の原因を私に指摘してくれるわけではありません。私はこのエラーを処理するために何をしなければならないのですか?私はそれを処理する方法を見るまで、私はバッファフリーのための命令を一時停止しています。これについて私を助けることができますか? –

+0

それを処理しないでください - それを修正してください! –

1

ベストの答えは..「Int16型/のInt32/Int64の」

いくつかの倍のファイル変換が膨大な数になりますの代わりに「ダブル」置き換える最大範囲を持っていることはありません倍増です。

関連する問題