Autor Tema: Problemas para vaciar una matriz  (Leído 3088 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Problemas para vaciar una matriz
« 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
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Re:Problemas para vaciar una matriz
« Respuesta #1 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

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problemas para vaciar una matriz
« Respuesta #2 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?
« última modificación: Mayo 28, 2011, 06:09:21 pm por xkiz ™ »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Re:Problemas para vaciar una matriz
« Respuesta #3 en: Mayo 28, 2011, 05:07:25 pm »
Con la función Erase() que uso en el ejemplo que puse. :)

DoEvents! :P

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problemas para vaciar una matriz
« Respuesta #4 en: Mayo 28, 2011, 05:22:36 pm »
Ok!! perdon no habia advertido!!!!


Muchas Gracias!!!!
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.