Comunidad Gambas-es

Versión completa: Error al insertar un array en un array
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Necesito mover el último elemento de un array de arrays tipo String a otra posición utilizando Insert pero me da un error de coincidencia de tipos. Ando algo perdido, he buscado información pero no encuentro nada. Sólo se me ocurre añadir un elemento vacío al final y "bajar" los elementos necesarios para dejar el hueco, pero debe de haber un método más sencillo.

El código que da error es este:

GAMBAS
  1.    Dim aString As New String[][]
  2.    Dim aTemp As String[]
  3.  
  4.    aString.Push(["1", "2", "3"])
  5.    aString.Push(["4", "5", "6"])
  6.    aString.Push(["7", "8", "9"])
  7.    aString.Push(["10", "11", "12"])
  8.  
  9.    aTemp = aString.Pop()
  10.    aString.Insert(aTemp, 1)   'ERROR: No coinciden los tipos: requerido String[], obtenido String en cambio.


Se agradece cualquier ayuda.
Un saludo
Para esos casos puedes usar perfectamente el tipo Variant[]

GAMBAS
  1. Dim aString As New Variant[]
  2.    Dim aTemp As String[]
  3.  
  4.    aString.Push(["1", "2", "3"])
  5.    aString.Push(["4", "5", "6"])
  6.    aString.Push(["7", "8", "9"])
  7.    aString.Push(["10", "11", "12"])


 
 luego puedes referirte a cada elemento con la sintaxis clásica: n=aString[x][z]

Saludos.
Hola Harpo.

Te sirve de esta forma:
GAMBAS
  1.    Dim aString As New String[][]
  2.    Dim aTemp As String[]
  3.  
  4.    aString.Push(["1", "2", "3"])
  5.    aString.Push(["4", "5", "6"])
  6.    aString.Push(["7", "8", "9"])
  7.    aString.Push(["10", "11", "12"])
  8.    '
  9.    aTemp = aString.Pop().Copy()
  10.    aString.Insert([aTemp], 1)


Gracias a los dos!!

El secreto es encerrar la variable entre corchetes:

GAMBAS
  1. aString.Insert([aTemp], 1)   'Funciona con corchetes



Cambiando el tipo a Variant[] no da error, pero en vez de insertar un array de tres elementos inserta tres nuevos elementos.

[Imagen: fRqf6jm.png]

Lo dicho, muchas gracias señores.
(21-05-2022, 18:07)Harpo escribió: [ -> ]Gracias a los dos!!

El secreto es encerrar la variable entre corchetes:

GAMBAS
  1. aString.Insert([aTemp], 1)   'Funciona con corchetes



Cambiando el tipo a Variant[] no da error, pero en vez de insertar un array de tres elementos inserta tres nuevos elementos.

[Imagen: fRqf6jm.png]

Lo dicho, muchas gracias señores.

Lo escribí a vuelapluma (supongo que sería vuela tecla hoy día)  pero la solución es la misma: añade corchetes.

Saludos.