Массив

wowa

Well-Known Member
01.02.2007
845
0
#1
Подскажите, пожалуйста...
Я раньше всегда забирал список форм из базы вот таким способом
' Получаем список форм открытой БД
Forall form In db.Forms
stMsgString = stMsgString & Chr(10) & form.Name
End Forall

Но это получется строка, а мне нужно массив...
Это как -то делается (как я понимаю) Redim.. но я так и не понял как (((...
 
R

Ronchik

Гость
#2
Подскажите, пожалуйста...
Я раньше всегда забирал список форм из базы вот таким способом
' Получаем список форм открытой БД
Forall form In db.Forms
stMsgString = stMsgString & Chr(10) & form.Name
End Forall

Но это получется строка, а мне нужно массив...
Это как -то делается (как я понимаю) Redim.. но я так и не понял как (((...
Можно вот так

Код:
Dim stMsgString() as string
Dim i as Integer
i=0
Forall form In db.Forms 
ReDim Preserve stMsgString(i)
stMsgString(i) = form.Name 
i=i+1
End Forall
 

morpheus

скриптописец
07.08.2006
3 915
1
#3
Для: wowa
RTFM + Dynamic arrays

на самом деле всё просто
используя Redim мы указываем верхнюю границу массива от 0 до N, с полным очищением всех значений в массиве
используя Redim Preserve мы указываем верхнюю границу массива от 0 до N, НО ранее введённые хначения в массиве остаються

Код:
Dim arrMyArray() as string ' мы обвиили дин. массив 
i = 0 
Forall form In db.Forms  
Redim Preserve arrMyArray(i)  
arrMyArray(i) = form.Name
i = i + 1 
End Forall


а в Вашем коде легко зделать из строки массив
Код:
dim f as variant
Forall form In db.Forms 
stMsgString = stMsgString & Chr(10) & form.Name 
End Forall
f = Evaluate( { @Explode(} & stMsgString & {; @Char(10) )} )
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#5
А можно сразу создать массив нужного размера:
Код:
Dim arr() As String
Redim arr(Lbound(db.Forms) To Ubound(db.Forms))
 

morpheus

скриптописец
07.08.2006
3 915
1
#7
Для: wowa
бедный, стока ответов... фиг разгребёш... :D :D :D ;)