2013-07-03 16 views
7

Robię projekt i muszę użyć VB6. Mam problem z kilkoma podstawowymi zadaniami, częściowo z powodu (jak sądzę) braku dokumentacji i częściowo dlatego, że zazwyczaj używam języków ze składnią opartą na C.VB6 - Definiowanie macierzy ciągów

Kiedy zdefiniować tablicę w języku C#, to zwykle następująco:

string[] s = {"a", "b", "c", "d" }; 

chcę zrobić to w VB6.

Ale w VB6, wszystko robiłem tak:

Dim s(0 To 3) As String 
s(0) = "a" 
s(1) = "b" 
s(2) = "c" 
s(3) = "d" 

Czy jest bardziej efektywny sposób definiowania tablicę w VB6 niż przykładzie I przedstawionego powyżej? Sposób podobny do podejścia C#?

Odpowiedz

9
Dim s 
s = Array("a", "b", "c", "d") 
+0

na tyle prosty, zaskakujące, nie mogłem znaleźć tego nigdzie haha. Dzięki! –

+5

Należy podkreślić, że jest to zestaw * wariantów * nie * ciągi znaków * – MarkJ

8

Jeśli chcesz String tablicy w przeciwieństwie do wariantu tablica Array() przyniesie;

Function ArrayString(ParamArray tokens()) As String() 
    ReDim arr(UBound(tokens)) As String 
    Dim i As Long 
    For i = 0 To UBound(tokens) 
     arr(i) = tokens(i) 
    Next 
    ArrayString = arr 
End Function 

... 

Dim a() As String 
a = ArrayString("foo", "bar", ..., "qux") 
5

Oto kolejna możliwość:

Dim S() As String 

S = Split("a|b|c|d", "|") 
+0

Nie jest to niezwykle wydajne. Funkcja Split() zwraca Wariant zawierający tablicę String, a następnie kopiuje całą tablicę do nowej tablicy String. –

+0

To nie jest zdumiewająco kiepski wykonawca. Jeśli chcesz odtworzyć tablicę w ciasnej pętli, możesz utworzyć tablicę w ten sposób poza pętlą, a następnie skopiować ją do drugiej zmiennej tablicowej wewnątrz pętli dla każdej iteracji. – Bob77