guizans   08-08-2022, 00:03
#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.
Código:
Private Function preguntarDatos(d As String) As Float[]

  Dim a, c As Integer
  Dim entrada As String
  Dim en As Float[]
  Dim b As Float
 
  en = New Float[filas, columnas]
  Print "Introduce los datos de la matriz '" & d & "':"
  For c = 0 To filas - 1
    For a = 0 To columnas - 1
      While True
        Print "Dato [" & Str(c + 1) & ", " & Str(a + 1) & "] = ?"
        Input entrada
        Try b = CFloat(entrada)
        If Error Then
          Print "Dato no válido..."
        Else
          Break
        Endif
      Wend
      en[c, a] = b
    Next
  Next
  Return en
End
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.
Código:
Dim a, c As Integer
Dim entrada,d As String
Dim en As Float[]
Dim b As Float
dim filas, columnas as integer

filas = 3
columnas = 3
d="jk"

  en = New Float[filas, columnas]
  Print "Introduce los datos de la matriz '" & d & "':"
  For c = 0 To filas - 1
    For a = 0 To columnas - 1
      While True
        Print "Dato [" & Str(c + 1) & ", " & Str(a + 1) & "] = ?"
      entrada = "3"
        Try b = CFloat(entrada)
        If Error Then
          Print "Dato no válido..."
        Else
          Break
        Endif
      Wend
      en[c, a] = b
    Next
  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.
tincho   08-08-2022, 20:38
#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.
guizans   08-08-2022, 22:22
#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.
Última modificación: 08-08-2022, 23:15 por guizans.
Shordi   09-08-2022, 10:29
#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
guizans   09-08-2022, 23:26
#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.
  
Usuarios navegando en este tema: 2 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.