VB6中给数组赋值的限制
作者:admin 日期:2009-05-27
(由于用得不是很多,所以干脆记下来免得下次用到时又忘了.)
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中的错误提示:
引用内容
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 键 。
数组中的各元素,必须个别指定其值。这个错误的起因与解决方法如下所示:
试图将一个值指定给一个数组变量,但没有指定要将这个值指定给哪个元素。
要设置数组中的一个元素,必须指定此元素的下标。例如,若 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 键 。
评论: 1 | 引用: 0 | 查看次数: 2285
XXX有时候必须是变体有时候却可以和对象同类型~