Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Mayo 28, 2011, 03:12:09 pm
-
Haber una ayudita por favor que esto me tranco un cacho!!
creo que mirando el código se entenderá!
Private Sub Command1_Click()
Dim Mat() As String
'esta linea da error 9 El subindice esta fuera del intervalo
'este no es emi problema
If UBound(Mat) > 0 Then MsgBox "Exito"
ReDim Mat(1) 'asigno 2 elementos
Mat(0) = "Hola"
Mat(1) = "Mundo"
'ahora si tengo exito hasta aca todo ok!
If UBound(Mat) >= 0 Then MsgBox "Exito"
'Ahora como vuelvo la variable al estado original nothing
'y que me vuelva a dar el error 9 la linea sguiente...
ReDim Mat(0) '
'me la vacia a la matriz pero sigue devolviendo
'Exito en la linea
If UBound(Mat) >= 0 Then MsgBox "Exito"
' y no deseo este comportamiento
End Sub
-
Option Explicit
Private Sub Form_Load()
Dim a&()
ReDim a(0)
Debug.Print UBound(a)
'la matriz contiene un elemento el (0)
Erase a 'borramos la matriz
Debug.Print UBound(a) 'error puesto que la matriz está vacía osea, no iniciada
End Sub
Si quieres saber si un array está iniciado puedes usar esto:
Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef myArray() As Any) As LongSi te devuelve 0 dimensiones es que no está iniciado. Hay más formas, con CopyMemory() y la del NotNot, pero mi favorita es la que te he dicho.
DoEvents! :P
-
Ok Gracias amigo esto me sirve!! pero como lo desinicializo o lo descargo todo!! mediante codigo!!
Esa es mi pregunta?
-
Con la función Erase() que uso en el ejemplo que puse. :)
DoEvents! :P
-
Ok!! perdon no habia advertido!!!!
Muchas Gracias!!!!