| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 429 人关注过本帖
标题:一直找不到答案,Inet控件数组问题.帮帮忙认真看下
只看楼主 加入收藏
爱末流
Rank: 2
等 级:论坛游民
帖 子:101
专家分:16
注 册:2011-6-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
一直找不到答案,Inet控件数组问题.帮帮忙认真看下
图片附件: 游客没有浏览图片的权限,请 登录注册


为什么Inet1_StateChanged 事件的索引值(Index)不是从顺序变化呢? 我在立即窗体中输出了(值太长我给出一小半)
 50
 52
 52
 52
 52
 43
 52
 52
 47
 46
 48
 49
 51
 53
 54
 55
 56
 59
 60
 67
为什么索引有相同的啊?难道它重复执行?还有上面的图片右边的链接输出是随机输出的..不是和左图中对应输出结果的..
我自己还单步执行了 Command1_Click() 执行完到了 Inet1_StateChanged 的索引变成了40...(不解,我不太懂事件流程)

求解......代码有点长,,希望大家认真看下哦..





[code=VB][/code]
Private Sub Command1_Click()
On Error Resume Next
 If Text1.Text = "" Then
   MsgBox "不能为空"
  Exit Sub
 End If
 For i = 0 To List1.ListCount - 1
    Load Inet1(i)
     Inet1(i).Cancel
     Inet1(i).Proxy = List1.List(i)
     Inet1(i).Execute Text1.Text, "get"
     ProgressBar1.Value = i
      Label3.Caption = i
     Next
End Sub
Private Sub Command2_Click()
CommonDialog1.Filter = "文本|*.txt"
CommonDialog1.InitDir = App.Path
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then
List1.Clear
Dim S As String
    Open CommonDialog1.FileName For Input As #1
       Do While Not EOF(1)
         Line Input #1, S
         List1.AddItem S
       Loop
      Close
      Label1.Caption = "总数: " & List1.ListCount
End If
End Sub

Private Sub Form_Load()
Text1.Text = "www.baidu.com"
End Sub

Private Sub Inet1_StateChanged(Index As Integer, ByVal State As Integer)
 On Error Resume Next
 Debug.Print Index
If State = 11 Then
  a = Inet1(Index).GetHeader
  a = Mid(a, 1, InStr(1, a, vbCrLf))
   List2.AddItem List1.List(Index) & "  连接错误  " & a
   Inet1(Index).Cancel
   Unload Inet1(Index)
   ProgressBar1.Value = ProgressBar1.Value + 1
   Label2.Caption = "已连接了: " & List2.ListCount & "个"
   ElseIf State = 12 Then
    a = Inet1(Index).GetHeader
    a = Mid(a, 1, InStr(1, a, vbCrLf))
    List2.AddItem List1.List(Index) & "   连接成功   " & a
    Inet1(Index).Cancel
    Unload Inet1(Index)
    ProgressBar1.Value = ProgressBar1.Value + 1
    Label2.Caption = "已连接了: " & List2.ListCount & "个"
 End If
End Sub
搜索更多相关主题的帖子: 答案 
2011-06-03 11:14
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:20 
你是使用了多个 inet 控件吧。

inet 控件是连接服务器读取数据的。
它需要访问网络,而网络访问不像本地,速度可控,网络访问的速度是千差万别的。
Inet1_StateChanged 这个事件是做什么的,我没去查。平时我很少用这个控件。
它是根据每个控件的状态来触发事件的,而控件的状态与网络有关,自然触发事件的时间不可能是按顺序来触发,而是按连接网络的情况来触发。

对于一个 索引号 触发多个 事件,我估计是与 这个网页里的内容有点关。
可能 IIS 返回  HTTP 100 信息,有可能就会造成 触发二个事件。(我估计的,没去测试。)

如果你针对每个代理服务器,使用一个 控件,那么你可以使用一个数组来标志每个 代理服务器的情况,确认信息后,保存标志,然后关闭 该控件的网络连接。

授人于鱼,不如授人于渔
早已停用QQ了
2011-06-03 17:02
快速回复:一直找不到答案,Inet控件数组问题.帮帮忙认真看下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034123 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved