aa = array("1","2","3")和aa = split("1,2,3",",")这两种处理方式,对于 aa  最终的值有区别吗?

解决方案 »

  1.   

    Array 函数      返回一个包含数组的 Variant。语法Array(arglist)所需的 arglist 参数是一个用逗号隔开的值表,这些值用于给 Variant 所包含的数组的各元素赋值。如果不提供参数,则创建一个长度为 0 的数组。说明用来表示数组元素的符号由变量名、圆括号以及括号中的所需元素的索引号组成。在下面的示例中,第一条语句创建一个 Variant 的变量 A。第二条语句将一个数组赋给变量 A。最后一条语句将该数组的第二个元素的值赋给另一个变量。Dim A As Variant
    A = Array(10,20,30)
    B = A(2)使用 Array 函数创建的数组的下界受 Option Base 语句指定的下界的决定, 除非 Array 是由类型库(例如 VBA.Array )名称限定。如果是由类型库名称限定,则 Array 不受 Option Base 的影响。注意 没有作为数组声明的 Variant 也可以表示数组。除了长度固定的字符串以及用户定义类型之外,Variant 变量可以表示任何类型的数组。尽管一个包含数组的 Variant 和一个元素为 Variant 类型的数组在概念上有所不同,但对数组元素的访问方式是相同的。Split函数
          描述返回一个下标从零开始的一维数组,它包含指定数目的子字符串。语法Split(expression[, delimiter[, count[, compare]]])Split函数语法有如下几部分:部分 描述 
    expression 必需的。包含子字符串和分隔符的字符串表达式 。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。 
    delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。 
    count 可选的。要返回的子字符串数,–1表示返回所有的子字符串。 
    compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。 
    设置值compare参数的设置值如下:常数 值 描述 
    vbUseCompareOption –1 用Option Compare语句中的设置值执行比较。 
    vbBinaryCompare 0 执行二进制比较。 
    vbTextCompare 1 执行文字比较。 
    vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。 
      

  2.   

    aa = array("1","2","3")

    aa = split("1,2,3",",")
    这两种处理方式,对于 aa  最终的值有区别吗?1、这两个函数的作用完全是两回事,楼上的朋友的回贴已经把这两个函数讲得很明白了;
    2、两者生成的数组下标值有可能会不一样,因为Array创建的数组的下界由Option Base决定,因此它生成的数组可能是aa(2)也可能是aa(3),而split生成的数组只能是aa(2)
      

  3.   

    我的程序是这样的 NewBindings = Array(2)
    NewBindings(0) = "192.135.0.36:80:ok.com"
    NewBindings(1) = "192.135.0.36:80:www.ok2.com"
    NewWebServer.ServerBindings = NewBindings这样写不对================================================================================NewBindings = "192.135.0.36:80:ok.com,192.135.0.36:80:www.ok2.com"
    NewWebServer.ServerBindings = Split(NewBindings , ",")这样写也不对================================================================================NewWebServer.ServerBindings = Array("192.135.0.36:80:ok.com", "192.135.0.36:80:www.ok2.com")这样写就对了================================================================================但是我无法用Array的方法来实现动态取值
      

  4.   

    后面有一些代码我没有贴出来,我的这段程序是用于用ADSI建站点时,绑定多个域名
      

  5.   

    两个函数还有一个细小的区别:返回值不同
    Split函数返回一个字符串数组
    Array函数返回一个包含数组的Variant变量
    ServerBindings属性应该要求的就是一个Variant变量。NewBindings = Array(2)
    ----
    这样写肯定不对,它返回的是一个1维整型数组,第1维元素的值为2但是我无法用Array的方法来实现动态取值
    --------------
    这句话没怎么明白。
      

  6.   

    不好意思,说错了,是动态赋值, 不是动态取值我的想让用户自己填写欲绑定的域名,所以就不能像:Array("192.135.0.36:80:ok.com", "192.135.0.36:80:www.ok2.com")这样把域名都写死了,需要从函数传进来的参数中分析才能知道倒底有几个域名。小弟水平有限,不知道Array()函数中的各个项怎么才能动态赋值
      

  7.   

    用Array函数进行动态赋值就太大意义了。
    你还是可以使用Split函数,只是需要简单的转换一下:Dim var As Variant
    NewBindings = "192.135.0.36:80:ok.com,192.135.0.36:80:www.ok2.com"
    var = Split(NewBindings, ",")NewWebServer.ServerBindings =var
      

  8.   

    S_GetBindings = "1.1.1.1:88:ok1.com,2.2.2.2:77:ok2.com.cn"
    GetBindings = Split(S_GetBindings, ",")
    ReDim NewBindings(UBound(GetBindings))
    For I = 0 To UBound(GetBindings)
        NewBindings(I) = GetBindings(I)
    Next
    NewWebServer.ServerBindings = NewBindings我是这样写的。谢谢了!!
      

  9.   

    使用我上面给的方法就应该可以吧:
    dim varNewBindings As VariantS_GetBindings = "1.1.1.1:88:ok1.com,2.2.2.2:77:ok2.com.cn"
    GetBindings = Split(S_GetBindings, ",")
    varNewBindings =GetBindingsNewWebServer.ServerBindings=varNewBindings 下面的语句多余了
    ReDim NewBindings(UBound(GetBindings))
    For I = 0 To UBound(GetBindings)
        NewBindings(I) = GetBindings(I)
    Next