border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

  #1 (permalink)  
Antiguo 24-02-2005, 19:57:04
Avatar de geq
geq geq is offline
Gran Participación en el Foro
 
Registrado: nov 2004
Posts: 148
geq Valoración +2
Contactar con geq a través de MSN
Predeterminado Problema con array..

Tengo un problema cuando quiero borrar todos los elementos de un arreglo. Yo utilizé esto:

Código:
Dim i As Integer

For i = 0 To MyArr.Count
  MyArr.Remove i
Next
Pero el problema es que no borra todos.. Comprobé que MyArr.Count era, por ejemplo, 23. Pero cuando llegaba i a 17, daba un error que decía que el índice estaba fuera del intérvalo y no continuaba borrando.. Pero 17 es menor que 23!!

Quisiera saber si alguien tiene una solución/explicación o algún otro método para vaciar arreglos.. Se me había ocurrido eliminarlo y volverlo a declarar, pero no sé cómo..

Muchas gracias!
__________________
g a b o..

www.cqsoft.com.ar
Responder Con Cita
  #2 (permalink)  
Antiguo 24-02-2005, 20:30:34
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.199
acalanto ha deshabilitado la reputación
Predeterminado

Esto hace referencia a tu pregunta explode y realmente considero que estás utilizando una colección como array cuando deberías usar simplemente array.

Lo que te sucede es que estás removiendo índices en la collection y si tienes 27 -inicialmente- y borras el índice 27, ya no lo puedes borrar, sencillamente porque no existe.

Además has de tener en cuenta que manipular una collection (o HasTable si prefieres llamarla) mediante sus índices es, paradójicamente, mucho más lento que a través de sus claves de acceso.


Anda, mírate el ejemplo Split que seguro que es mucho más eficiente que lo que tratas de implementar.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #3 (permalink)  
Antiguo 24-02-2005, 20:38:09
Avatar de geq
geq geq is offline
Gran Participación en el Foro
 
Registrado: nov 2004
Posts: 148
geq Valoración +2
Contactar con geq a través de MSN
Predeterminado

Si. Entiendo. Pero Lo de split ya esta resuelto (y estoy agradecido). Esto es para otro uso. Necesito vaciar un arreglo que creo con:

Código:
Dim MyArr as New Collection
para poder cargar nueva información.. Eso es todo.

Si yo lo declaro con

Código:
Dim MyArr(50)
Puedo escribir en el elemento 51 (ej.) sin problemas? O debo crear el nuevo elemento/agregar elementos?

Yo utilizo Collection para poder agragar objetos con

Código:
MyArr.Add("nuevo valor")
Pero me surge el problema anterior cualdo quiero eliminarlos para poder volver a utilizar el código anterior, pero que no agregue en el elemento siguiente sino en el 0..

Muchas gracias!
__________________
g a b o..

www.cqsoft.com.ar
Responder Con Cita
  #4 (permalink)  
Antiguo 25-02-2005, 06:00:00
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.199
acalanto ha deshabilitado la reputación
Predeterminado

Es que Collection no es ni se comporta como un Array. Cuando eliminas un elemento de la lista -por ejemplo el 354- el 355 pasa potéticamente a ocupar su lugar y así sucesivamente.

Para vacirar totalmente una Collection

Set micol = nothing

lo mejor sería que utilices pares de datos ya que Collection te acepta KEY:ITEM y así


micol.add "354", "Valor"

Si deseas eliminar un valor

micol.remove "354"

para recuperar

mival = micol.item("354")

Ten cuidado porque si la clave solicitada no existe se produce un error en tiempo de ejecución que debes capturar.

Otra cosa, las Collections, como son un Array, no se dimensionan; son estructuras de datos dinámicas que ajustan su tamaño según añades datos.


No sé si ahora me he explicado mejor.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #5 (permalink)  
Antiguo 27-02-2005, 02:47:25
Gran Participación en el Foro
 
Registrado: oct 2003
Ubicación: Granada
Posts: 149
MiguelP. Valoración +2
Predeterminado

Si vas eliminando, a la misma vez va cambiando el Count del Array. Prueba a borrarlos así:

Código:
Dim i As Integer 
Fin=MyArr.Count 
For i = Fin To 0 step -1
  MyArr.Remove i 
Next
Suerte. No sé si te entendí bien. Pero creo que es esto.
__________________
Miguel
Responder Con Cita
  #6 (permalink)  
Antiguo 27-02-2005, 15:18:38
Gran Participación en el Foro
 
Registrado: oct 2003
Posts: 436
MiguelS Valoración +2
Predeterminado

Código:
For Each...Next Statement
      

Repeats a group ofstatements for each element in anarray orcollection.

Syntax

For Each element In group
[statements]
[Exit For]
[statements]

Next [element]
Responder Con Cita
  #7 (permalink)  
Antiguo 28-02-2005, 19:42:50
Avatar de geq
geq geq is offline
Gran Participación en el Foro
 
Registrado: nov 2004
Posts: 148
geq Valoración +2
Contactar con geq a través de MSN
Predeterminado

Muchas gracias a todos! Entiendo lo de Collection. En base a esto, escribí un código similar al que envió MiguelP. Estaba por publicarlo, pero él lo hizo primero..

Creo que será mejor utilizar, Acalanto, Set. Muchísimas gracias y (sinceramente) tus explicaciones son exelentes.

Agradezco mucho la atención en este foro. Muchas gracias! :smt003

P.D.: Después les comento acerca del proyecto que me llevó a realizar mis dos últimos posts..
__________________
g a b o..

www.cqsoft.com.ar
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
problema con array matiasmedina5 C/C++ 2 26-11-2007 16:39:39
Array de objetos garzu Visual Basic.NET 2003 & 2005 2 15-02-2007 08:52:39
Array en C1TrueDBGrid (en .Net) Ronald_Leon_Madrid ComponentONE Suite 6 26-08-2005 00:34:00
dimension de un array nonnato Visual Basic 6.00 2 30-11-2004 10:29:56
problema con array de formularios nancho_5 Visual Basic 6.00 2 22-11-2004 04:52:49


La franja horaria es GMT. Ahora son las 13:32:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right