2010-12-17 13 views

Respuesta

5

No creo que haya nada incorporada, pero se puede crear su propia función como:

Function IsInitialized(a)  
    Err.Clear 
    On Error Resume Next 
    UBound(a) 
    If (Err.Number = 0) Then 
     IsInitialized = True 
    End If 
End Function 

que luego se puede llamar como:

Dim myArray() 
If Not IsInitialized(myarray) Then 
    WScript.Echo "Uninitialized" 
End If 

Sin embargo, una La forma de evitarlo es no declarar matrices vacías, en su lugar declarar solo una variable y establecerla en una matriz más tarde, por lo tanto, cambie el código anterior a:

Dim myArray 
myArray = Array() 
If Not IsInitialized(myarray) Then 
    WScript.Echo "Uninitialized" 
End If 
0

Prefiero Not la matriz, y luego comparo el resultado con -1. Esto funciona, y lo hace sin causar un error intencionalmente.

Dim myArray() 

... 

If (Not myArray) = -1 Then 
    ReDim myArray(0) 
Else 
    ReDim Preserve(0 To UBound(myArray)+1) 
End If 
+0

maravilloso pequeño truco. – martin

+0

Esto no funciona para mí en VBS o Classic ASP. – Lankymart

+0

@Lankymart, ¿cómo declaraste la matriz? –

0

He estado usando algo como esto:

Dim arr 
arr = null 

sub addElement (byref arr, element) 
    if isNull (arr) then 
     redim arr(0) 
    else 
     redim preserve arr (uBound(arr) + 1) 
    end if 
    arr(uBound(arr)) = element 
end sub 
-1

encontramos con este en la búsqueda de una respuesta a la misma pregunta, que inicializa una variable a 0 y el incremento sólo cuando agrego a la zona y a continuación, sólo comprobar el valor variable en lugar ...

dim myarray() num = -1 si addtoarray entonces num = num + 1 redim preservar myarray (num) final si si num> -1 entonces hacer algo final si

+0

incluye código para ayudar al futuro lector – HaveNoDisplayName

Cuestiones relacionadas