2009-03-24 6 views
0

я просто делал некоторый yicky кода, и я думал, вместо того, чтобы использовать три динамические массивы, как таковые:динамических LotusScript многомерных массивов

тусклые х() как строка, у() в виде строки, Z() как строка

Будет лучше иметь 3-мерный динамический массив. Но; помощь и мои неуклюжие эксперименты не выявили метода их определения.

Это не работает:

тусклые х()() или тусклым (, 2) или тусклым (,)

Любые идеи никому?

ответ

5

Динамический массив объявляется одинаково независимо от количества измерений (массивы в LotusScript могут иметь до 8 измерений). Согласно вашему примеру, я думаю, что это двухмерный массив, который вы хотите, где первое измерение ограничено тремя записями.

Если вы сначала объявить массив как:

Dim x() As String 

Вы можете указать границы в соответствии со следующим примером:

Redim x(0 To 2, 0 To 9) ' A two dimensional array 

И если вам нужно, чтобы увеличить массив позже (и держать все значения) вы можете сделать это следующим образом:

Redim Preserve x(0 To 2, 0 To 99) 

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

1

Вы можете использовать списки вместо массивов.

Dim x list as String 

Это полностью динамический и принимает строку как индекс. Список не может содержать списки, но списки могут содержать объекты, так что вы можете захотеть сделать

Public Class ListContainer 
    Public level2 List as String 
End Class 

Таким образом, вы никогда не должны Redim сохранить. Aallall полностью настраивает вас в списке

+0

Steve. Списки могут содержать списки, если вы назначаете список варианту, а затем добавляете этот вариант в свой основной список, он будет работать. Сделайте это в функции и верните эту функцию в свой список, например: list (A) = buildlist(), в списке объектов (тусклый как вариант), вы говорите, что dim b list в качестве строки, а затем верните buildlist = b, , вы хотите. Я делаю это много и отлично работает. – andora