分享

VB6中给数组赋值的限制

 hdzgx 2017-10-16
    MSDN有个错误是"不能给数组赋值",即不能将整个数组指定给另一个数组.

而实际上有时行,有时又不行,刚刚写代码时又遇到了,干脆试了一下,结果是,"被赋值数组需要是动态数组".

对于类型,源数组与目标数组需要一致,即使是自定义类型也可以.

以下说明一下可以赋值的情况:

[codes=vb]Private Type MyType
    kk(10) As Long
End Type

Dim I() As MyType, J(100) As MyType

I = J       'I是动态数组,成立[/codes]

[codes=vb]Dim I() As Long, J(100) As Long

I = J       'I是动态数组,成立[/codes]

如果目标数组是固定数组,那么就不能完成赋值,会得到编译器的一个"不能给数组赋值"的编译错误:

[codes=vb]Dim I(100) As Long, J(100) As Long

I = J       '编译错误:不能给数组赋值[/codes]

没有考虑是否有其它情况.

我只需要找到可行的这个方案即可.

以下是MSDN中的错误提示:

引用内容 引用内容
不能给数组赋值
  
数组中的各元素,必须个别指定其值。这个错误的起因与解决方法如下所示:

        试图将一个值指定给一个数组变量,但没有指定要将这个值指定给哪个元素。
        要设置数组中的一个元素,必须指定此元素的下标。例如,若 MyArray 为一个整型数组,则表达式 MyArray = 5 是无效的,下列的表达式才是正确的:

        MyArray(UBound(MyArray)) = 5

        试图将整个数组指定给另一个数组。例如,假如 Arr1 是一个数组,Arr2 是另一个数组,则下列两个赋值都是无效的:
        Arr1 = Arr2    ' 无效的赋值。
        Arr1() = Arr2()    ' 无效的赋值。

        想要将一个数组赋值给另一个数组,必须个别赋值元素。例如:

        For count = LBound(Arr2) to UBound(Arr2)
                Arr1(count) = Arr2(count)
        Next count

        请注意,可以将整个数组放在一个 Variant 中,使一个 variant 变量包含整个数组:

        Dim MyArr As Variant
        MyVar = Arr2()

        您可以使用与正常数组相同的下标,来引用在 variant 中的数组元素,例如:

        MyVar(3) = MyVar(1) + MyVar(5)

详细信息,请先选取有疑问的项目,然后按下 F1 键 。          

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多