Ошибка при изменении размера динамического массива в UFT - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь изменить динамический массив.Сначала создайте пустой массив, затем добавляйте 1 каждый раз, когда мне нужно добавить элемент в массив.

Dim PegSubTot()
for i = 1 to end
If value found then
ReDim Preserve PegSubTot(Ubound(PegSubTot) + 1)
PegSubTot(i) = value
endif
next

1 Ответ

0 голосов
/ 22 февраля 2019

Вам необходимо установить размер массива, прежде чем вы сможете его изменить:

Dim PegSubTot   ' declare as variable
for i = 1 to end ' presuming end is set somewhere?
    If value found then
        If IsArray(PegSubTot) Then ' check if it's an array
            ReDim Preserve PegSubTot(Ubound(PegSubTot) + 1) ' If it is, extend array by 1
        Else
            ReDim PegSubTot(0) ' If it's not redim as a one element array
        End If
        PegSubTot(UBound(PegSubTot)) = value ' Set highest element of array to value
    end if
next

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

Дайте мне знать, если это требует дальнейшего разъяснения.

...