【发布时间】:2011-11-03 08:43:54
【问题描述】:
普通动态数组支持空(= nil, Length() = 0)。
然而变体数组似乎不支持这一点。
我在变量数组中传递我的数据(因为 OLE/COM),当用户定义 0 个元素时出现错误...
我可以使用 varEmpty 代替长度为 0 的数组,但是这些数据数组可以灵活更改(添加项、删除项等)。
如何在 Variant 中传递空数组,还是需要使用其他方式?
【问题讨论】:
普通动态数组支持空(= nil, Length() = 0)。
然而变体数组似乎不支持这一点。
我在变量数组中传递我的数据(因为 OLE/COM),当用户定义 0 个元素时出现错误...
我可以使用 varEmpty 代替长度为 0 的数组,但是这些数据数组可以灵活更改(添加项、删除项等)。
如何在 Variant 中传递空数组,还是需要使用其他方式?
【问题讨论】:
varEmpty 是处理此问题的正确方法。当然,COM 接口另一端的代码可能不喜欢空数组,但这一切都取决于您与该接口的特定合约。
【讨论】:
这里有一些代码可以更新变体数组,无论数组是否为空。
Sub Variant_Add(Var_Array As Variant, What)
' Add "What" to a "Var_Array" without book keeping.
' 3/18/19 Created, Mac Lingo
' Note: Variant_Add must be defined in the following way: _
Dim Var_Array as Variant
Prog = "Variant_Add"
If IsEmpty(Var_Array) Then
ReDim Var_Array(1) As Variant
Knt = 1
Else
Knt = Var_Array(0) + 1
ReDim Preserve Var_Array(Knt) As Variant
End If
Var_Array(Knt) = What
Var_Array(0) = Knt
End Sub ' Variant_Add
【讨论】: