Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 3
Ir a la página 1, 2, 3  Siguiente
 
Array De Distintos Tipos
Autor Mensaje
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
 




===================
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 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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Array De Distintos Tipos 
 
    Lo mismo ni eso...
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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
 




===================
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 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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes A Cerca De Controles En Distintos Formularios messerschmitt General 3 Sabado, 16 Abril 2011, 17:14 Ver último mensaje
soplo
No hay nuevos mensajes Tipos Por Valor Y Tipos Por Referencias Shell General 2 Viernes, 26 Octobre 2012, 05:18 Ver último mensaje
fabianfv
No hay nuevos mensajes Grupo De Distintos Controles Con Evento Co... Shell General 2 Jueves, 01 Septiembre 2016, 19:35 Ver último mensaje
Shell
No hay nuevos mensajes Recopilación De Distintos Temas Shell Off-topic 0 Miercoles, 24 Junio 2020, 19:07 Ver último mensaje
Shell
 

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 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