О функциях Join и Split

Автор sokol92, 26 апреля 2020, 19:13

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

sokol92

В следующих примерах у меня выдается ошибка времени выполнения 9 - Индекс за пределами заданного диапазона. Если значение n в каждом из макросов уменьшить на 1, то ошибки нет.

Sub TestSplit
  Dim v, n
  n=16370
  v=Split(Space(n-1))
End Sub

Sub TestJoin
  Dim v, n, a
  n=16369
  redim a(n)
  v=Join(a)
End Sub


P.S. О баге (если у меня сейчас не обман зрения) сообщу.
Владимир.

bk

#1
Sub TestSplit
 Dim v, n
 n=16370
 v=Split(Space(n-1)," ", n-1) 'получаем массив
 Print Ubound(v) ' = 16368 (0=>16368=16369)
End Sub

Sub TestJoin
 Dim v, n, a
 n=16369
 redim a(n)
 a=Array(Space(n)) 'заполнили массив
 v=Join(a) 'получаем строку
 Print Len(v) '=16369
End Sub

mikekaganski

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

sokol92

И еще раз спасибо, Михаил! У меня были подозрения на этот счет, поскольку в текстах этих функций (методов) я "криминала" не увидел (поэтому и написал про обман зрения).
Владимир.