Gambas - Operador IF no reacciona

   
Vista:

Operador IF no reacciona

Publicado por Victor (2 intervenciones) el 31/03/2009 17:04:11
Hola a todos, acabo de iniciarme en Gambas y llevo varios dias dándole vueltas a un error en una clausula IF.

El problema es que sea el que sea el resultado de la operación el interior de la clausula IF siempre se ejecuta. La clausula en cuestión la tengo redactada de la siguiente manera:

IF orden + desplazamiento > ficheros.Length - 1 OR IF orden + desplazamiento < 0 THEN
RETURN FALSE
END IF

Tengo la versión de Gambas 2.7.

En el resto del programa las clausulas IF funcionan correctamente. Lo he probado con parentesis sin paréntesis, y nada. ¿Como he de redactar dicha sentencia?

Gracias de antemano por vuestra ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Operador IF no reacciona

Publicado por aristicol (9 intervenciones) el 03/04/2009 18:47:19
Hola, viendo la forma como escribes tu toma de decisiones yo lo haria asi:

IF (orden + desplazamiento) > (ficheros.Length - 1) OR (orden + desplazamiento) < 0 THEN RETURN FALSE

Tenias in IF de mas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Operador IF no reacciona

Publicado por Victor (2 intervenciones) el 06/04/2009 10:49:43
Gracias por tu respuesta, en realidad ya lo había intentado, pero según leí en la documentación de Gambas en este lenguaje se utiliza OR IF y AND IF.

De todas formas parece que he encontrado el error. La variable desplazamiento, la tenía definida como Byte, y la utilizaba para almacenar un desplazamiento de +1 o -1. Aunque en el depurador me salian los valores correctos, al asignar la expresión booleana a una variable me salía siempre TRUE. Así que modifique el tipo de dato a Integer, y todo funciona correctamente.

Supongo que todo será debido a una conversión de tipos implícita o algo así, y al transformar el tipo byte con el valor de -1 se convertía en 256.

De todos modos muchas gracias por tu ayuda, y espero que este mensaje también le sirva a alguien que se encuentre con el mismo problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar