变量数组可以有0个元素吗?

问题描述 投票:7回答:2

普通的动态数组支持空(= nil, Length() = 0)

然而,变体阵列似乎不支持这一点。

我在变量数组中传递我的数据(因为OLE / COM),当用户定义0个元素时我得到一个错误...

我可以使用varEmpty而不是0长度数组,但这些数据数组是灵活更改的(添加项目,删除项目等)。

我如何在Variant中传递空数组,还是需要使用其他方式?

arrays delphi variant
2个回答
5
投票

varEmpty是处理这个问题的正确方法。当然,COM接口另一端的代码可能不喜欢空数组,但这完全取决于您对该接口的特定合同。


0
投票

下面是一些代码,它们将更新Variant Array,无论Array是否为空。

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
© www.soinside.com 2019 - 2024. All rights reserved.