[リストへもどる]
一括表示

投稿時間:2003/03/17(Mon) 19:19
投稿者名:SAT
URL :
タイトル:
Inetコントロールのエラーについて
Inetでのエラーについて質問があります

エラーに対応するため下記の通りプログラムを記述しています。
しかし、エラー時(LANを抜いたり、適当なURLを設定)にStateChanged
が走ったり、走らなかったりと常にエラーを検地できません。
常にエラーを検地できる方法はありますのでしょうか?
申しわけありませんがよろしくお願い致します。

Private Sub Inet1_StateChanged(ByVal State As Integer)
    If State = icError Then                                 'エラー判定
        MsgBox Inet1.ResponseInfo, vbCritical, "エラー"     'メッセージ表示
    End If
End Sub

投稿時間:2003/03/18(Tue) 02:34
投稿者名:丸太
Eメール:
URL :
タイトル:
Re: Inetコントロールのエラーについて
> Inetでのエラーについて質問があります
>
> エラーに対応するため下記の通りプログラムを記述しています。
> しかし、エラー時(LANを抜いたり、適当なURLを設定)にStateChanged
> が走ったり、走らなかったりと常にエラーを検地できません。
> 常にエラーを検地できる方法はありますのでしょうか?
> 申しわけありませんがよろしくお願い致します。
>
> Private Sub Inet1_StateChanged(ByVal State As Integer)
>     If State = icError Then                                 'エラー判定
>         MsgBox Inet1.ResponseInfo, vbCritical, "エラー"     'メッセージ表示
>     End If
> End Sub

エラーが出ないというのは、同じ事をやってもStateChangedが発生する時と
しないときがあるということでしょうか。それとも、特定の操作をすると検知して
くれないということでしょうか。後者だったらなんとかなるかもしれませんが。

投稿時間:2003/03/19(Wed) 18:04
投稿者名:SAT
URL :
タイトル:
Re^2: Inetコントロールのエラーについて
> > Inetでのエラーについて質問があります
> >
> > エラーに対応するため下記の通りプログラムを記述しています。
> > しかし、エラー時(LANを抜いたり、適当なURLを設定)にStateChanged
> > が走ったり、走らなかったりと常にエラーを検地できません。
> > 常にエラーを検地できる方法はありますのでしょうか?
> > 申しわけありませんがよろしくお願い致します。
> >
> > Private Sub Inet1_StateChanged(ByVal State As Integer)
> >     If State = icError Then                                 'エラー判定
> >         MsgBox Inet1.ResponseInfo, vbCritical, "エラー"     'メッセージ表示
> >     End If
> > End Sub
>
> エラーが出ないというのは、同じ事をやってもStateChangedが発生する時と
> しないときがあるということでしょうか。それとも、特定の操作をすると検知して
> くれないということでしょうか。後者だったらなんとかなるかもしれませんが。

下記の通りになる確立が高いのですが、絶対なるわけではないので困っていいます。
・LANを抜いてエラーを発生させた場合
 LANを抜いた後、Exeを起動させ接続した時はStateChangedのエラーが検知でき
 ますが、もう一度Exeを起動させ接続させた場合にはStateChangedのエラーが検
 知できません。
・URLの入力でエラーを発生させた場合
 「http://10.〜」と入力するとStateChangedのエラーが発生する場合があります
 が「afafafaf」と適当に入力した場合、全くStateChangedのエラーが発生しません。

投稿時間:2003/03/19(Wed) 22:04
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: Inetコントロールのエラーについて
> > >         MsgBox Inet1.ResponseInfo, vbCritical, "エラー"     'メッセージ表示

「MsgBox」や、開発環境での「一時停止」などの使用は避けた方が無難です。
Debug.Print/App.LogEvent/ListBox.AddItemなどといった、処理を中断させないような
コードにしておく事をお奨めします。

全ての通信が完了した後(icResponseCompleted発生後)であれば、MsgBox等でも
構わないとは思いますが、それ以前の状態の時に、通信処理を中断させて
しまうようなコードを実行すると、他のStateを取りこぼしてしまう可能性があります。


>  「http://10.〜」と入力するとStateChangedのエラーが発生する場合があります
>  が「afafafaf」と適当に入力した場合、全くStateChangedのエラーが発生しません。
icError以外のStateを監視してみては如何でしょうか。
それによって、どこで問題が発生したのかがわかるかもしれません。

StateChangedイベントの発生状況を、ResponseInfo/ResponseCode値とあわせて見ていけば、
  IPを検索しに行ったか? サーバーを見つけたか/エラーになったか?
  サーバーに接続しにいったか? 接続に成功した/エラーになったか?
  それともそもそも、一切のStateChangedが発生しないのか?
  その場合は、StillExecutingはどうなっているのか?
などの判定ができるのではないでしょうか。