2013-07-03 15 views
7

Bir proje yapıyorum ve VB6 kullanmam gerekiyor. Bazı temel görevlerle uğraşıyorum, kısmen (ne düşündüğümü) belgelerin eksikliğinden kaynaklanıyor ve kısmen de C tabanlı bir sözdizimi olan dilleri kullanıyorum. Ben C# bir dizi tanımlarkenVB6 - Bir Dizi Dizisi Tanımlama

, genellikle aşağıdaki gibidir:

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

VB6'de bunu yapmak istiyor.

Ama VB6

, tüm bu yapıyorum:

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

Yukarıda gösterilen örnekte daha VB6 bir dizi tanımlanmasında daha verimli bir yolu var mı? C# yaklaşımına benzer bir yol? dizi Array() verecektir Varyant aksine bir Dize dizi istiyorsanız

cevap

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

, bunu hiçbir yerinde bulamadı şaşırtıcı haha. Teşekkürler! –

+5

Bunun bir çeşit * Varyantlar * olmaması gerektiğini vurgulamalıyız * Dizeler * – MarkJ

8

;

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

Burada başka olasılık: Yeterince basit

Dim S() As String 

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

Bu inanılmaz derecede verimli değil. Split() işlevi, bir dizi Dize içeren bir Varyant döndürür ve ardından dizinin tamamını yeni bir Dize dizisine kopyalar. –

+0

İnanılmaz derecede zayıf bir performans değil. Diziyi sıkı bir döngü içinde yeniden oluşturmanız gerekiyorsa, döngü dışında bu şekilde bir dizi oluşturabilir ve ardından her yineleme için döngü içindeki ikinci dizi değişkenine kopyalayabilirsiniz. – Bob77

İlgili konular