Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

[SOLUCIONADO]  Error al insertar un array en un array
#1

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
    ¡Gracias!
#2

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.

No podemos regresar
[-] Los siguientes 1 usuarios dice gracias a Shordi por este post:
  • Harpo
    ¡Gracias!
#3

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)


[-] Los siguientes 1 usuarios dice gracias a omoreno por este post:
  • Harpo
    ¡Gracias!
#4

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.
    ¡Gracias!
#5

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

No podemos regresar
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 3 invitado(s)