Set IISOBJ = GetObject("IIS://LocalHost/W3SVC")Dim str2 As StringFor Each site In IISOBJ
 If (site.Class = "IIsWebServer") Then  Bindings = site.ServerBindings
 End If
Next
如上面的代码,Bindings是一个数组,Bindings(0),Bindings(1)等存储相关信息,但Bindings数组元素的个数不确定,如何知道赋值后Bindgings元素的个数?谢谢

解决方案 »

  1.   

    http://zhidao.baidu.com/question/11606694.html
      

  2.   

    一般可以使用 Ubound涵数得到上标,再加上1即为总笔数, msgbox ubound(Bindings)+1  你的代码不全,在mssgbox只前,你应该还会有一些代码例如:Dim Bindings$(3),s Private Sub Command1_Click()
       s=Getdata '返回全部的Bindings, 我用s, 你不能再用Bindings
       Msgbox Ubound(s) + 1 '总笔数
    End Subpublic Function Getdata() as string()
       Bindings(0)="1111"
       Bindings(1)="2222"
       Bindings(2)="3333"
       Bindings(3)="4444"
       Getdata=Bindings() '涵数返回
    End Function
      

  3.   

    一般可以使用 Ubound涵数得到上标,再加上1即为总笔数, msgbox ubound(Bindings)+1   你的代码不全,在msgbox之前,你应该还会有一些代码 例如: Dim i%, Bindings$(), sPrivate Sub Command1_Click()
       s = Getdata '返回全部的Bindings, 我用s, 你不能再用Bindings
       MsgBox UBound(s) + 1 '总笔数
    End SubPublic Function Getdata() As String()
       For i = o To 3
          ReDim Preserve Bindings(i)
          Bindings(i) = String(4, CStr(i))
          Print Bindings(i)
       Next i
       Getdata = Bindings() '涵数返回
    End Function
      

  4.   

    呵呵 抱歉...还有点错误Option Explicit
    Dim i%, Bindings$(), sPrivate Sub Command1_Click()
       s = Getdata '返回全部的Bindings, 我用s, 你不能再用Bindings
       MsgBox UBound(s) + 1 '总笔数
    End SubPublic Function Getdata() As String()
       For i = 0 To 3
          ReDim Preserve Bindings$(i)
          Bindings(i) = String(4, CStr(i))
          Print Bindings(i)
       Next i
       Getdata = Bindings() '涵数返回
    End Function
      

  5.   

    没看太懂,我在代码中直接使用UBound出现编译错误,这么说吧,在我的代码中,执行完:Bindings = site.ServerBindings 后,Bindings数组的元素已经被赋值,但个数不一定,有可能是一个,即只有:Bindings(0),也有可能是两个,即: Bindings(0)和 Bindings(1),当然,也可能是多个。我现在就是想知道执行完赋值语句后Bindings数组到底有几个有效值,是1个还是2个,还是多个?
      

  6.   

    我们举个例吧, 在运行下面代码前, 你先运行几次的 计算器 (Windows自带的那个 calc.exe,随便你几次)
    '例如你是监测 计算器 的运行, 发现便自动关掉'添加 Command1Dim trec%
    Private Sub Command1_Click()
       Call CloseExe("calc.exe")
    End SubPublic Sub CloseExe(exenm As String)
       strcomputer = "."
       Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strcomputer & "\root\cimv2")
       Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & exenm & "'")
       MsgBox colProcessList.Count  '第一种方法得到总笔数,你的代码是 msgbox IISOBJ.count
       trec = 0
       If colProcessList.Count > 0 Then
          For Each objProcess In colProcessList
             If InStr(UCase(objProcess.ExecutablePath), UCase(exenm)) > 0 Then
                '如果条件符合,你的Bindings(trec)就得到值,笔数就加1
                'Bindings(trec) = objProcess.name
                objProcess.Terminate
                trec = trec + 1
             End If
          Next
       End If
       Set objWMIService = Nothing
       Set colProcessList = Nothing
       MsgBox trec '第二种方法得到总笔数
    End Sub
      

  7.   

    用ubound就可以了,出错的情况可能是你的数组没有被赋值。用on error捕获处理
      

  8.   

    我可能没说清楚我想要的,我再重新说一下吧:
    首先,我对VB不太熟悉:)在我的代码中:
    Bindings是一个自由变量,也就是说这个变量没有显式的定义成数组,拿来就直接用的。
    其次,Bindings = site.ServerBindings 语句中,site.ServerBindings 返回的肯定是一个数组,至于是几个,这个不一定。所以,执行完赋值语句后,Bindings的值可能是如下情况:Bindings表示如下:
    "aaaaaa"
    "bbb"
    也可能是如下情况:
    Bindings表示如下:
    "cc"
    "ddddd"
    "aaaaaaa"
    "ff"
    "22"
    我现在想知道的就是Bindings到底包含几个元素(如第一种情况,返回值应该是2,第二种情况返回值应该是5。cbm666,你的回答好象不是我这个意思,你得到的好象是我代码中for循环执行的次数,其实我写的那个FOR循环可以不管 ,你可以认为没有这个FOR循环,只有这一句赋值,如上面的描述,那Bindings包括几个元素,怎么获得?最好写出来,谢谢。
      

  9.   

    如果是数组的话直接用LBOUND和UBOUND来获得数组可用的最小和最大个数。
    如果是对象的话,一般都可以通过.COUNT属性来获得总的元素数量。
      

  10.   

    for循环目的只是要告诉你 ReDim Preserve Bindings$(trec) 数组重新宣告的概念
    上面的 MsgBox colProcessList.Count  '.count也可以返回数组中有几个变量的笔数.依你上面的意思在通用区要宣告 Dim Trec&,Bindings  'Bindings是变体型变量'返回调用的部份代码则是
    Bindings = site.ServerBindings 
    Trec=Ubound(Bindings)
    Redim Preserve Bindings$(Trec)Msgbox Bindings(0) 会得到 "cc" 
    Msgbox Bindings(1) 会得到 "ddddd" 
    Msgbox Bindings(2) 会得到 "aaaaaaa" 
    Msgbox Bindings(3) 会得到 "ff" 
    Msgbox Bindings(4) 会得到 "22" 呵呵 再看不懂, 俺投降了.....
     
      

  11.   

    ubound 再加try ,catch即可