[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/09/07(Wed) 10:31
投稿者名:ゼロ
Eメール:
URL :
タイトル:
WinsockコントロールのErrorイベント
MSDNライブラリをみると、以下の通りになっています。
構文
object_Error(number As Integer, Description As String, Scode As Long, Source As String,
HelpFile as String, HelpContext As Long, CancelDisplay As Boolean)

number の設定値は次のとおりです。
定数
sckBadState      40006 要求されたトランザクションまたは要求に対して、プロトコルまたは接続の
状態が正しくありません。
sckInvalidArg    40014 関数に渡された引数が、正しい形式でなかったか、または指定された範囲内
にありませんでした。
sckSuccess       40017 成功しました。
sckUnsupported   40018 サポートされていないバリアント型です。
sckInvalidOp     40020 現在の状態では不正な操作です。
sckOutOfRange    40021 引数の値が範囲外です。
sckWrongProtocol 40026 要求されたトランザクションまたは要求に対して、プロトコルが正しくあり
ません。


実際Errorイベントに下記エラー処理を作成したところ、

  Select Case number
  Case sckBadState '40006 要求されたトランザクションまたは要求に対して、プロトコルまたは接

の状態が正しくありません。
     <処理>

  End Select

Case文で
「実行時エラー'6':オーバーフローしました。」
となります。

40000番代のエラーは、Errorイベントでは見れないのでしょうか?
それとも何か方法があるのでしょうか?

投稿時間:2005/09/07(Wed) 12:19
投稿者名:B燃
Eメール:
URL :
タイトル:
Re: WinsockコントロールのErrorイベント
> MSDNライブラリをみると、以下の通りになっています。
> 構文
> object_Error(number As Integer, Description As String, Scode As Long, Source As String,
> HelpFile as String, HelpContext As Long, CancelDisplay As Boolean)
>
> number の設定値は次のとおりです。
> 定数
> sckBadState      40006 要求されたトランザクションまたは要求に対して、プロトコルまたは接
続の
> 状態が正しくありません。
> sckInvalidArg    40014 関数に渡された引数が、正しい形式でなかったか、または指定された範
囲内
> にありませんでした。
> sckSuccess       40017 成功しました。
> sckUnsupported   40018 サポートされていないバリアント型です。
> sckInvalidOp     40020 現在の状態では不正な操作です。
> sckOutOfRange    40021 引数の値が範囲外です。
> sckWrongProtocol 40026 要求されたトランザクションまたは要求に対して、プロトコルが正しく
あり
> ません。
>
>
> 実際Errorイベントに下記エラー処理を作成したところ、
>
>   Select Case number
>   Case sckBadState '40006 要求されたトランザクションまたは要求に対して、プロトコルまたは

> 続
> の状態が正しくありません。
>      <処理>
>
>   End Select
>
> Case文で
> 「実行時エラー'6':オーバーフローしました。」
> となります。
>
> 40000番代のエラーは、Errorイベントでは見れないのでしょうか?
> それとも何か方法があるのでしょうか?

検証も何もしていませんが、さらりと眺めて思ったのは
numberの頭文字が小文字になっていますが問題ないですかぁ?
'N'と大文字を入力しても'n'になってしまうとか

投稿時間:2005/09/07(Wed) 13:48
投稿者名:giant_rabbit
Eメール:giant_rabbit_d@yahoo.co.jp
URL :
タイトル:
Re: WinsockコントロールのErrorイベント
> MSDNライブラリをみると、以下の通りになっています。
> 構文
> object_Error(number As Integer, Description As String, Scode As Long, Source As String,
> HelpFile as String, HelpContext As Long, CancelDisplay As Boolean)
>
number が integer にもかかわらず CASE 分の定数が LONG の範囲であるからだと思います。
また、このエラーが発生している場合、number 変数がinteger型まので、MSBがたっているので、負の値
になっていると思われます。そうであれば、integer型をLongに変換すればいいだけです。

思いつくのは、
・number を 16進数に変換する
・変換した 16進数を Long 型の変数に変換する。
単純に Select文は

 Select case clng("&h" & hex(number))

となります。演算部はイミディエイトで確認しただけなので...bugたらごめんなさい。

投稿時間:2005/09/07(Wed) 22:42
投稿者名:ゼロ
Eメール:
URL :
タイトル:
Re^2: WinsockコントロールのErrorイベント
> 思いつくのは、
> ・number を 16進数に変換する
> ・変換した 16進数を Long 型の変数に変換する。
> 単純に Select文は
>
>  Select case clng("&h" & hex(number))
>
> となります。演算部はイミディエイトで確認しただけなので...bugたらごめんなさい。

「オーバーフローエラー」は、回避できました。
ありがとう御座います。
実際、case文に引っかかるかは、もう少し時間が掛かりそうです。