2013-07-03 4 views
7

Sto facendo un progetto e ho bisogno di usare VB6. Sono alle prese con alcune attività di base, in parte a causa (cosa penso) è una mancanza di documentazione, e in parte perché di solito uso le lingue con una sintassi basata su C.VB6 - Definizione di una serie di stringhe

Quando mi definisco un array in C#, di solito segue:

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

io voglio fare questo in VB6.

Ma in VB6, tutto quello che ho fatto questo:

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

C'è un modo più efficiente di definire una matrice in VB6 che l'esempio che ho illustrato in precedenza? Un modo simile all'approccio C#?

risposta

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

Abbastanza semplice, sorprendente non riuscivo a trovare da nessuna parte che haha. Grazie! –

+5

Va sottolineato che questo è un array di * Varianti * non * Archi * – MarkJ

8

Se si desidera un String serie in contrasto con la Variante serie Array() produrrà;

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

Ecco un'altra possibilità:

Dim S() As String 

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

Questo non è straordinariamente efficiente. La funzione Split() restituisce un valore Variant contenente una matrice di String e quindi copia l'intero array in una nuova matrice di String. –

+0

Non è un artista straordinariamente scadente. Se è necessario ricreare la matrice all'interno di un ciclo stretto, è possibile creare una matrice in questo modo all'esterno del ciclo e quindi copiarla in una seconda variabile di matrice all'interno del ciclo per ogni iterazione. – Bob77