Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Array De Colecciones
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Array De Colecciones 
 
Buenas!.

Acostumbrado a una colección de array estuve viendo muy por encima lo que es un array de colección.
Yo creo que siempre será más fácil y más rápido el uso de las colecciones frente a los arrays.

Private personas As New Collection[]

Public Sub Main()
  Dim unapersona As Collection
  
  unapersona = New Collection  
  With unapersona
    .Add("Antonio", "Nombre")
    .Add("Masculino", "Sexo")
    .Add(25, "Edad")  
  End With
  personas.Add(unapersona)
 
 unapersona = New Collection
 With unapersona
   .Add("Maria", "Nombre")
   .Add("Femenino", "Sexo")
   .Add(23, "Edad")
 End With
  personas.Add(unapersona)
  
  Stop
    
End
 


 arraydecolecciones

Encontrar la estructura de datos para un ejemplo no siempre es sencillo.
Desde luego tener que estar recorriendo todo el array es un proceso algo mas lento que usar una clave.

¿ Mejorarías el ejemplo ?.  
Si desde luego estas buscando por nombres, un sexo, una edad. Pero eso parece más de colección.

Si viéramos un mapa de estrellas que están dentro de una rejilla de dos dimensiones. Si fuéramos por su coordenada x e y dentro
de ese array virtual podríamos ver que estrellas existen dentro de esa retícula. Con un click de ratón por ejemplo.
En cambio con las colecciones ya sería buscar por un termino concreto.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Viernes, 29 Septiembre 2017, 13:46; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Array De Colecciones 
 
Estas usando una base de datos?
 



 
última edición por jguardon el Jueves, 12 Octobre 2017, 17:18; editado 1 vez 
Editado por jguardon, Jueves, 12 Octobre 2017, 17:18: Quitar texto citado
Torrealba2719 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Array De Colecciones 
 
Torrealba2719:

Citar:

Estas usando una base de datos?


No, tan solo es un ejemplo de tipo de arreglo o array. Hice un pequeño ejemplo por si algunos
de los compañeros de la comunidad le encuentran ellos una utilidad a este tipo de estructura de datos
o por si ellos lo han usado para un motivo concreto.

Normalmente suelo usar más las colecciones.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Array De Colecciones 
 
Eso lo utilizo para recuperar los datos originales que son mostrados en un gridView.
Copio y pego el código extraído del control dbGrid, que forma parte de los dbControles (disponible en la Granja de gambas). El propósito es que, dado que el grid sólo muestra cadenas de texto y cuando muestras una base de datos eso no es correcto, pues que devuelva un array de colecciones que contienen los datos originales de tabla.

Private Function Values_Read() As Variant[]

    Dim n, c As Integer
    Dim clave, valor As String
    Dim actual As New Collection
    Dim ar As New Variant[]
    Dim v As Variant
    Dim tipo As Integer

    For c = 0 To Me.Rows.Selection.Count - 1
        actual = New Collection
        For n = 0 To Me.columns.Count - 1
            valor = IIf(Me[Me.Rows.Selection[c], n].text = "", Me[Me.Rows.Selection[c], n].richText, Me[Me.Rows.Selection[c], n].text)
            tipo = $rs.Fields[n].type
            If tipo = gb.Null Then
                    v = Null
            Else If tipo = gb.String Then
                    v = valor
                Else If tipo = gb.Date Then
                    v = Val(valor)
                Else  'If tipo = gb.Boolean Or If tipo = gb.byte Or If tipo = gb.short Or If tipo = gb.Integer Or If tipo = gb.long Or If tipo = gb.Single Or If tipo = gb.Float Or If tipo = gb.Date Then
                    v = Val(valor)
            Endif                    
            clave = Me.rslt.Fields[n].Name
            actual.Add(IIf(IsNull(v), "", v), clave)
        Next
        ar.Add(actual)
        actual = Null
    Next
    
    Return ar

End


Devuelve un array con una colección por cada fila seleccionada del GridView que contiene todos los campos correspondientes a las columnas mostradas pero en su formato original (numérico, texto o lo que sea).
 




===================
No podemos regresar
 
última edición por shordi el Sabado, 30 Septiembre 2017, 07:39; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Array De Colecciones 
 
Shordi:

¿ Cómo es que no usaste un Select Case con la variable tipo ?.  
No parece tanto código usando uno u otro.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Array De Colecciones 
 
Shell escribió: [Ver mensaje]
Shordi:

¿ Cómo es que no usaste un Select Case con la variable tipo ?.  
No parece tanto código usando uno u otro.

Saludos

Es código fósil... antes estaba activa la línea
Else 'If tipo = gb.Boolean Or If tipo = gb.byte Or If tipo = gb.short Or If tipo = gb.Integer Or If tipo = gb.long Or If tipo = gb.Single Or If tipo = gb.Float Or If tipo = gb.Date Then


y otras muchas que hacían verificaciones varias en las condiciones de los if... luego fuí simplificando las condiciones hasta llegar a lo que ves, pero sin plantearme nunca el cambio "simplemente porque estaba ahí"

Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron