1

Тема: VBS: Проверка есть ли данные в массиве

При построении кода использую динамические многомерные массивы. В результате обработки я помещаю в массивы те или иные данные при определенных условиях, но существуют ситуации когда никаких данных в массив не помещено, даже массив не обозначен в результате появляются ошибки в работе.



Dim FileMassiv()

'Здесь появляется ошибка
MsgBox Ubound(FileMassiv)

Как можно уйти от данной ошибки ? Или только обработать код ошибки ?

2

Re: VBS: Проверка есть ли данные в массиве

Проверку на IsArray(FileMassiv) можно сделать.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

3

Re: VBS: Проверка есть ли данные в массиве

При таком объявлении массива IsArray() всегда скажет да:

Dim FileMassiv()
MsgBox IsArray(FileMassiv) ' Истина
ReDim FileMassiv(-1)
MsgBox IsArray(FileMassiv) ' Истина
ReDim FileMassiv(0)
MsgBox IsArray(FileMassiv) ' Истина

Ошибку можно обойти так:

Dim FileMassiv()
ReDim FileMassiv(-1)
' выполнение операций
' ...
' проверка
MsgBox Ubound(FileMassiv) ' для пустого массива вернет -1

И так:

Dim FileMassiv
FileMassiv = Array()
' выполнение операций
' ...
' проверка
MsgBox Ubound(FileMassiv) ' для пустого массива вернет -1

Или сначала проверить на наличие элементов в массиве (что-то подобное уже было на форуме):

Dim FileMassiv(), HasElements
' выполнение операций
' ...
' проверка
HasElements = False
For Each Elt In FileMassiv
    HasElements = True
    Exit For
Next
MsgBox HasElements

Во всех этих случаях проверяемая переменная FileMassiv при вызове TypeName() и VarType() возвращает одинаковые значения "Variant()" и 8204.

Щт Уккщк Куыгьу Туче
’ҐЄгй п Є®¤®ў п бва Ёж : 1251

4

Re: VBS: Проверка есть ли данные в массиве

При таком объявлении массива IsArray() всегда скажет да:

omegastripes, действительно. Не сообразил сразу.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

5

Re: VBS: Проверка есть ли данные в массиве

Спасибо omegastripes. Вариант с "-1" больше всего подходит.