Comunidad Gambas-es
[SOLUCIONADO] Error al insertar un array en un array - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: [SOLUCIONADO] Error al insertar un array en un array (/thread-891.html)



Error al insertar un array en un array - Harpo - 21-05-2022

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:

Código:
   Dim aString As New String[][]
   Dim aTemp As String[]

   aString.Push(["1", "2", "3"])
   aString.Push(["4", "5", "6"])
   aString.Push(["7", "8", "9"])
   aString.Push(["10", "11", "12"])

   aTemp = aString.Pop()
   aString.Insert(aTemp, 1)   'ERROR: No coinciden los tipos: requerido String[], obtenido String en cambio.
Se agradece cualquier ayuda.
Un saludo


RE: Error al insertar un array en un array - Shordi - 21-05-2022

Para esos casos puedes usar perfectamente el tipo Variant[]

Código:
Dim aString As New Variant[]
   Dim aTemp As String[]
 
   aString.Push(["1", "2", "3"])
   aString.Push(["4", "5", "6"])
   aString.Push(["7", "8", "9"])
   aString.Push(["10", "11", "12"])
 
 luego puedes referirte a cada elemento con la sintaxis clásica: n=aString[x][z]

Saludos.


RE: Error al insertar un array en un array - omoreno - 21-05-2022

Hola Harpo.

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



RE: Error al insertar un array en un array - Harpo - 21-05-2022

Gracias a los dos!!

El secreto es encerrar la variable entre corchetes:

Código:
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.


RE: Error al insertar un array en un array - Shordi - 22-05-2022

(21-05-2022, 18:07)Harpo escribió: Gracias a los dos!!

El secreto es encerrar la variable entre corchetes:

Código:
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.