Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

7 Декабрь 2021, 19:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как определить вид массива  (Прочитано 349 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ost
Форумчанин
***
Offline Offline

Сообщений: 229


« Стартовое сообщение: 7 Август 2021, 13:25 »

Доброго.
Как определить вид массива (одномерный, двумерный или массив массивов)? Может, готовым кодом угостите =)
Спасибо.

UPD

Пока написал такое
Код:
function ArrayShape(aAr)
 ' возвращает 0 - передан не массив
 '                  1 - одномерный
 '                  2 - двумерный
 '                  3 - массив массивов
 if not isArray(aAr) then
  ArrayShape = 0
 elseif isArray(aAr(0)) then
  ArrayShape = 3
 else
  On Error GoTo labelEh
  lbound(aAr,2)
  ArrayShape = 2 : goto labelEnd
  labelEh:
  ArrayShape = 1
 end if
 labelEnd:
 On Error GoTo 0
end function


Проще никак?
« Последнее редактирование: 7 Август 2021, 14:12 от ost » Записан
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 625


WWW
« Ответ #1: 7 Август 2021, 14:28 »

Попробуйте вариант, который определяет размерность массива.

Код:
' Возвращает число измерения массива (не более 99). Если 0, то arr не массив.
Function GetNdims(arr) As Long
  Dim i As Long, j As Long
  On Error GoTo ErrLabel
  For i = 1 To 99
    j = UBound(arr, i)
    GetNdims = GetNdims + 1
  Next i
ErrLabel:
End Function
Записан

Владимир.
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!