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

Error número de dimensiones en Array
#1

Hola a todos.

Me estoy volviendo loco con un error que no soy capaz de encontrar. Tengo esta función, que basicamente rellena un array de dos dimensiones preguntando al usuario por los números.
GAMBAS
  1. Private Function preguntarDatos(d As String) As Float[]
  2.  
  3.   Dim a, c As Integer
  4.   Dim entrada As String
  5.   Dim en As Float[]
  6.   Dim b As Float
  7.  
  8.   en = New Float[filas, columnas]
  9.   Print "Introduce los datos de la matriz '" & d & "':"
  10.   For c = 0 To filas - 1
  11.     For a = 0 To columnas - 1
  12.       While True
  13.         Print "Dato [" & Str(c + 1) & ", " & Str(a + 1) & "] = ?"
  14.         Input entrada
  15.         Try b = CFloat(entrada)
  16.         If Error Then
  17.           Print "Dato no válido..."
  18.         Else
  19.           Break
  20.         Endif
  21.       Wend
  22.       en[c, a] = b
  23.     Next
  24.   Next
  25.   Return en


Como apunte, las variables "filas" y "columnas" son variables de clase y he comprobado que no tengan un valor de cero. El caso que es en la primera vuelta del bucle for me da un error de "Bad number of dimensions" en la línea 22. Y no puede ser, ya que las variables "c" y "a" tienen el valor de 0, como digo es en la primera interacción.
 El caso que poninedo este código en la web de Gambas no me da error.
GAMBAS
  1. Dim entrada,d As String
  2. Dim en As Float[]
  3. dim filas, columnas as integer
  4.  
  5. filas = 3
  6. columnas = 3
  7. d="jk"
  8.  
  9.   en = New Float[filas, columnas]
  10.   Print "Introduce los datos de la matriz '" & d & "':"
  11.   For c = 0 To filas - 1
  12.     For a = 0 To columnas - 1
  13.       While True
  14.         Print "Dato [" & Str(c + 1) & ", " & Str(a + 1) & "] = ?"
  15.       entrada = "3"
  16.         Try b = CFloat(entrada)
  17.         If Error Then
  18.           Print "Dato no válido..."
  19.         Else
  20.           Break
  21.         Endif
  22.       Wend
  23.       en[c, a] = b
  24.     Next
  25.   Next



Como se puede observar es practicamente el mismo, el primero me da error y el segundo no. ¿Alguién ve lo que estoy haciendo mal?

Muchas gracias.

Un saludo.
    ¡Gracias!
#2

(08-08-2022, 00:03)guizans escribió:  Como se puede observar es practicamente el mismo, el primero me da error y el segundo no. ¿Alguién ve lo que estoy haciendo mal?

Creo que te has respondido tu solo. Si no asignas un valor para filas y columnas estas tienen el valor 0

1 Saludo.
    ¡Gracias!
#3

Pues no va a ser eso, por una sencilla razón, las variables filas y columnas, como puedes ver no están declaradas en la función,  son variables de clases y se le asigna el valor en otra función. Cuando el programa se me cae el depurador me pone el valor de esas dos variables y nunca son ceros. Otra cosa que me extraña, es que esa función ya hace tiempo que la programé y nunca me dio error que yo recuerde. Y no he realizado ningún cambio. Es que ese error me tiene desconcertado, no acabo de ver que estoy haciendo mal, o si es un error del intérprete.

Un saludo.

P.D. Acabo de copiar la función que me da error en un nuevo proyecto y ahí no me da ningún tipo de error. Eso quiere decir que no tengo error en el código. Ahora llega la gran pregunta...¿que hago? Por que la cosa me tiene desquiciado.
    ¡Gracias!
#4

De tu error en concreto no puedo ayudarte, nunca se me dio. Sin embargo de pequeños fallos "fantasma" similares sí tengo experiencia y en algunos casos se solucionó borrando todos los archivos de la carpeta .gambas del proyecto, para forzar una compilación nueva, revisando si hay componentes enlazados que no se usan y, en última instancia (sólo una vez me pasó) copiando todos los objetos del proyecto a uno nuevo.

Como son cosas tan esporádicas no puedo documentarlas y ni siquiera recuerdo con qué versiones de gambas ocurrieron... eso sí, fue hace tiempo.

Suerte.

No podemos regresar
    ¡Gracias!
#5

Hola.

He intentado borrar la carpeta oculta de Gambas del proyecto y sigue igual, así que no me queda otro remedio que hacer lo que dices, copiar todo el proyecto a uno nuevo. Es un fastidio, pero si es la única solución no me queda otra.

 Gracias por la ayuda.

Un saludo.
    ¡Gracias!


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

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)