Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Array De Distintos Tipos

Array De Distintos Tipos
Artículo
Responder citando    Descargar mensaje  
Mensaje Array De Distintos Tipos 
 
Hola!.

Os comento este problema.

Si tengo un array tal como este: [1,2,3,4,[5,6,7] ]
¿ Cómo harías para visualizar cada elemento del array ?.

Lo hice de esta forma:

Public Sub Main()
  
  Dim alista1 As Variant[] = [1, 2, 3, 4]
  
  alista1.Add([5, 6, 7])
  
  MostrarArray(alista1)
  
End

Public Sub MostrarArray(lista As Variant[])
  
  Dim tipo1 As Variant
  Dim tipo2 As Integer
  
  For Each tipo1 In lista    
    If TypeOf(tipo1) = gb.Integer Then
      Print tipo1
      'Llega un momento que tipo1 es un array
    Else If TypeOf(tipo1) = gb.Object Then    
      For Each tipo2 In tipo1
        Print tipo2
      Next
    Endif      
  Next
  
End
 


El tipo Objeto es como un comodín. No hay un tipo Array.  

¿ Cómo lo harías vosotros ?.

Bien, vayamos a otra cuestión.

¿ Como es que siendo Variant  no puedo hacer algo como esto ?.

lista1 = [1,2,3,4]
lista2 = [5,6,7]

lista1[2] = lista2

Según el error es las dimensiones están definidas.
Es fácil añadir, pero no sustituir. Puedo añadir un array a un array con el método .add, pero no puedo asignar a un elemento que parece de una dimensión, otro de mas dimensiones.

Saludos



 
Shell - Ver perfil del usuario Enviar mensaje privado  
Shell [ Jueves, 25 Septiembre 2014, 00:32 ]
 


Array De Distintos Tipos
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: Array De Distintos Tipos 
 
Citar:
¿ Cómo harías para visualizar cada elemento del array ?.


Yo lo hago así. Hay otras maneras, pero más sucias.

Citar:
¿ Como es que siendo Variant no puedo hacer algo como esto ?.

lista1 = [1,2,3,4]
lista2 = [5,6,7]

lista1[2] = lista2


Supongo que por la propia naturaleza de los tipos de datos. Un entero, sea o no parte de un array, tiene una existencia en la memoria absolutamente distinta que un array que apunta a otra serie de datos.
Aunque gambas no es excesivamente estricto en la declaración de los datos, el hecho de que haya que declararlos implica que su ubicación en memoria y demás ha de ser resuelta en tiempo de compilación, lo cual impone unos límites a los tejemanejes que puedes hacer después con ellos.

Seguro que Vuott te puede dar una respuesta más concisa.



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Jueves, 25 Septiembre 2014, 07:28 ]
Responder citando    Descargar mensaje  
Mensaje Re: Array De Distintos Tipos 
 
shordi escribió: [Ver mensaje]

Seguro que Vuott te puede dar una respuesta más concisa.


" Si yo tuviera una respuesta por cada problema, yo estaría a enseñar al Sorbona de París. "

(G. de Baskerville en "El nombre de la rosa" - U. Eco)

      il-nome-della-rosa

      



 
última edición por vuott el Jueves, 25 Septiembre 2014, 11:37; editado 2 veces 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Jueves, 25 Septiembre 2014, 11:32 ]
Responder citando    Descargar mensaje  
Mensaje Re: Array De Distintos Tipos 
 
    Lo mismo ni eso...



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Jueves, 25 Septiembre 2014, 11:47 ]
Responder citando    Descargar mensaje  
Mensaje Re: Array De Distintos Tipos 
 
Shell escribió: [Ver mensaje]


Si tengo un array tal como este: [1,2,3,4,[5,6,7] ]
¿ Cómo harías para visualizar cada elemento del array ?.


ehmmm... tu creaste un array de array. Este nuevo vector es el... quinto elemento y tiene indice 4.
Por esto yo haría así:

Public Sub Main()

 Dim alista1 As Variant[] = [1, 2, 3, 4]

' añade un array en el array:
   alista1.Add([5, 6, 7])
    
    Print alista1[0]
    Print alista1[1]
    Print alista1[2]
    Print alista1[3]
    Print alista1[4][0]
    Print alista1[4][1]
    Print alista1[4][2]

End


    


Mira por ejemplo eso:
Public Sub Main()

 Dim alista1 As Variant[] = [1, 2, 3, 4]

' añade un array en el array:
alista1.Add([5, 6, 7])
    
Print alista1[0]
Print alista1[1]
Print alista1[2]
Print alista1[3]
Print alista1[4][0]
Print alista1[4][1]
Print alista1[4][2]

' añade un array de array en el array:   :-D
alista1.Add([8, 9, [10, 11, 12]])

Print alista1[5][0]
Print alista1[5][1]
Print alista1[5][2][0]
Print alista1[5][2][1]
Print alista1[5][2][2]

End




 
última edición por vuott el Jueves, 25 Septiembre 2014, 18:32; editado 8 veces 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Jueves, 25 Septiembre 2014, 12:02 ]
Responder citando    Descargar mensaje  
Mensaje Re: Array De Distintos Tipos 
 
Shell escribió: [Ver mensaje]
Bien, vayamos a otra cuestión.

¿ Como es que siendo Variant  no puedo hacer algo como esto ?.

lista1 = [1,2,3,4]
lista2 = [5,6,7]

lista1[2] = lista2

Según el error es las dimensiones están definidas.
Es fácil añadir, pero no sustituir. Puedo añadir un array a un array con el método .add, pero no puedo asignar a un elemento que parece de una dimensión, otro de mas dimensiones.


¿Excusa, tu estás diciendo un código asì ?
Public Sub Main()

Dim lista1, lista2 As Variant[]

lista1 = [1, 2, 3, 4]
lista2 = [5, 6, 7]

lista1[2] = lista2

End


Si es este el código, el me funciona.
Por ejemplo:
Public Sub Main()

Dim lista1, lista2 As Variant[]

lista1 = [1, 2, 3, 4]
lista2 = [5, 6, 7]

lista1[2] = lista2

   Print lista1[0]
   Print lista1[1]
   Print lista1[2][0]
   Print lista1[2][1]
   Print lista1[2][2]
   Print lista1[3]

End




 
última edición por vuott el Jueves, 25 Septiembre 2014, 12:30; editado 3 veces 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Jueves, 25 Septiembre 2014, 12:25 ]
Responder citando    Descargar mensaje  
Mensaje Re: Array De Distintos Tipos 
 
Hola Vuott!.

Ok, luego lo repaso y comento mejor.

En otro mensaje comentare un efecto que he visto en Python, muy curioso con las listas.
Espero hacerlo detalladamente para que lo veáis bien. Es raro de "narices", es algo como infinito.

"Array de array de array..." y sigue y sigue..

Este tipo de datos resulta bastante interesante, pero no se lo rápido que sera eso. tanto array de array tiene que consumir
de memoria y de tiempo lo que no viene en los escritos. Y lioso, bastante.  

¿ Cuanto paracetamol os tomáis haciendo esas cosas ?.
Entonces la bolsa con hielos en la cabeza es algo habitual. Y un cubata al lado!.  9beber_1411649984_237358

Bueno, menos cachondeo y seamos serios.

Saludos



 
Shell - Ver perfil del usuario Enviar mensaje privado  
Shell [ Jueves, 25 Septiembre 2014, 14:00 ]
Responder citando    Descargar mensaje  
Mensaje Re: Array De Distintos Tipos 
 
Esta discusión de Shell me ha apretado como un... "Python".
Bueno, me dio la ocasión para estudiar cómo leer y escribir en un simple array a través de "Memory Stream" y un Puntero.

He hecho ahora un breve resumen en el WIKI italiano:
http://www.gambas-it.org/wiki/index...i_Memory_Stream



 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Jueves, 25 Septiembre 2014, 16:30 ]
Responder citando    Descargar mensaje  
Mensaje Re: Array De Distintos Tipos 
 
Acabo de ver la wiki italiana de gambas, que no había entrado hasta ahora por que yo de italiano ni papa. He visto ahí el trabajo que estás haciendo por difundir gambas.

¡Buen trabajo Vuott! ¡Muchos difusores como tú y el pythón estaría acabado!...      



 
última edición por shordi el Jueves, 25 Septiembre 2014, 17:52; editado 1 vez 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Jueves, 25 Septiembre 2014, 17:51 ]
Responder citando    Descargar mensaje  
Mensaje Re: Array De Distintos Tipos 
 
shordi escribió: [Ver mensaje]
¡Muchos difusores como tú y el pythón estaría acabado!...  


Hace falta un pythonero !  



 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Jueves, 25 Septiembre 2014, 18:30 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 3
Ir a la página 1, 2, 3  Siguiente
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 2 invitados
Usuarios registrados conectados: Ninguno


 



 

cron