Инструкция "ReDim Preserve" показалась Basic'у слишком сложной в условии

Автор eeigor, 31 июля 2022, 17:07

0 Пользователи и 1 гость просматривают эту тему.

eeigor

Легенда: счётчик i (получаемый по ссылке, зд. неважно) - это индекс нового элемента,
который требуется добавить в динамический строковый двумерный массив arr в процедуре AddNewToArray.

   Dim arr$()  'динамический строковый двумерный массив (0 To i, 0 To 2)
   Call AddNewToArray(arr, 0)

Sub AddNewToArray(arr, i)  'аргументы значений новых данных опущены, присваиваются жёстко в коде
Rem If i = 0 Then ReDim arr(i, 2) Else ReDim Preserve arr(i, 2)  '#Err! Not compiled (⁇)
Rem If i = 0 Then ReDim arr(i, 2): If i > 0 Then ReDim Preserve arr(i, 2)  '#Err! Ignores If i > 0 (⁇)

   If i = 0 Then
       ReDim arr(i, 2)
   Else
       ReDim Preserve arr(i, 2)
   End If

   arr(i, 0) = "a"
   arr(i, 1) = "b"
   arr(i, 2) = "c"
End Sub


Инструкция If работает только в развёрнутом виде. Второй Rem выше компилируется, но работает неверно, естественно.
Проблема с Else ReDim Preserve в однострочнике (первый Rem).

Rem If i = 0 Then ReDim arr(i, 2) Else ReDim Preserve arr(i, 2)  '#Err! Not compiled (⁇)

Баг ли это? Или как...
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

mikekaganski

С уважением,
Михаил Каганский

eeigor

Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community