Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Mayo 28, 2011, 03:12:09 pm

Título: Problemas para vaciar una matriz
Publicado 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á!

Código: [Seleccionar]
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
Título: Re:Problemas para vaciar una matriz
Publicado por: Psyke1 en Mayo 28, 2011, 03:40:40 pm
Código: [Seleccionar]
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:
Código: [Seleccionar]
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
Título: Re:Problemas para vaciar una matriz
Publicado por: Bazooka en Mayo 28, 2011, 05:04:02 pm
Ok Gracias amigo esto me sirve!! pero como lo desinicializo o lo descargo todo!! mediante codigo!!
Esa es mi pregunta?
Título: Re:Problemas para vaciar una matriz
Publicado por: Psyke1 en Mayo 28, 2011, 05:07:25 pm
Con la función Erase() que uso en el ejemplo que puse. :)

DoEvents! :P
Título: Re:Problemas para vaciar una matriz
Publicado por: Bazooka en Mayo 28, 2011, 05:22:36 pm
Ok!! perdon no habia advertido!!!!


Muchas Gracias!!!!