Может ли вариантный массив иметь 0 элементов? - PullRequest
7 голосов
/ 03 ноября 2011

Обычный динамический массив поддерживает пустой (= nil, Length() = 0).

Однако вариантный массив не поддерживает это.

Я передаю свои данные в массиве вариантов (из-за OLE / COM) и получаю сообщение об ошибке, когда пользователь определяет 0 элементов ...

Я могу использовать varEmpty вместо массива длины 0, но эти массивы данных могут изменяться гибко (добавить элемент, удалить элемент и т. Д.).

Как мне передать пустые массивы в Variant, или мне нужно использовать другой способ?

Ответы [ 2 ]

5 голосов
/ 03 ноября 2011

varEmpty - правильный способ справиться с этим. Конечно, код на другой стороне интерфейса COM может не похожи на пустые массивы, но все это зависит от конкретного контракта, который вы заключили с этим интерфейсом.

0 голосов
/ 19 марта 2019

Вот некоторый код, который обновит Variant 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
...