2009-02-10 34 views
7

Chcę użyć tablicy, którą deklaruję raz na górze mojego kodu kilka razy. Dawny.Czy możesz zadeklarować stałą tablicę w VBScript?

Const Quarters = [ "Q1", "Q2", "Q3", "Q4"]

Dla każdego q Quarter q.Do popracować

Itd

może to zrobić w VBScript?

+2

Możesz odczekać trochę czasu (> 5 minut), zanim zaznaczysz pytanie, na które odpowiedziano, aby więcej osób mogło zasugerować ... ;-) – Dscoduc

+2

Dlaczego? Na to pytanie odpowiedziano (zawsze mogę to zaznaczyć jako takie). – user45492

Odpowiedz

10

Tablica jest wynikiem wywołania funkcji (Array()) w języku VBScript. Można wprowadzać tylko wartości literalne Const. A więc: Nie, nie możesz.

2

Prosta odpowiedź: nie. Tablicy nie można utworzyć const.

6

Dlaczego po prostu nie zadeklarować tablicy jako publicznej, a następnie przydzielić tablicę podczas uruchamiania skryptu?

Public myArray(3) 
arrQuarters = Array("Q1", "Q2", "Q3", "Q4") 

For Each Quarter in arrQuarters 
    wscript.echo Quarter 
Next 
3

Można zdefiniować funkcję zwracania tablicy, która ma być używana jako stała. Na przykład:

For Each q in AllQuarters 
    wscript.echo q 
Next 

wscript.echo "element 0 = " & AllQuarters()(0) 

AllQuarters()(0) = "X1" 

wscript.echo "element 0 still = " & AllQuarters()(0) 


Function AllQuarters() 
    AllQuarters = Array("Q1","Q2","Q3","Q4") 
End Function 
+0

Oto DOBRA odpowiedź. Chociaż nie można zadeklarować stałej tablicy, istnieje obejście: zdefiniuj ją jako funkcję. – Stephan

1

krótszy i mniej rozwiązanie podatne na błędy byłoby:

Dim arr 
arr = Split("Q1 Q2 Q3 Q4") : ubd = UBound(arr) 
' Implied separator is " " aka 040 octal aka 32 Dec aka 020 Hex. 

Jeśli dane mogą zawierać spacji:

arr = Split("Le Sage,ne pleure,ni les vivants, ni les morts", ",") 
ubd = UBound(arr) 
' arr(2), for instance, now contains "ni les vivants" 

UWAGA: Nigdy nie wybrać separator, które mogłyby występują w twoich "atomowych" łańcuchach danych, lub funkcja ta zostanie podzielona na ten separator w środku pojedynczego fragmentu danych.

Powiązane problemy