Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: kim-elet-o on May 29, 2008, 09:27:36 AM

Title: Error en la definicion de constantes con valor hexadecimal.
Post by: kim-elet-o on May 29, 2008, 09:27:36 AM
Hola SplinterGu, he cazado un pequeño error a la hora de definir constantes numericas con valores hexadecimales, cuando compilo el siguiente programa:

PROGRAM Prueba;

CONST
  Pepa = 0Ah;
  Pepe = 0Bh;
END

BEGIN
  FRAME;
END

Me da el siguiente error:

Error in file anonimo.prg at line 5: ";" expected ("BH")

Se que el valor 0Bh hexadecimal es correcto, pero da ese error el compilador, de hecho el error lo detecte en la  0.93 de Fenix, y me puse a investigar si Bennu habia heredado ese error tambien, y bingo!, tambien lo tenia.

P.D: En caso que me halla equivocado pido perdon de antemano por hacerte perder el tiempo. :D
Title: Re: Error en la definicion de constantes con valor hexadecimal.
Post by: DCelso on May 29, 2008, 12:51:22 PM
Jurl, si que es una putada, como la b sirve para binary se hace la pixa un lío se cree que es "0 binario hexadecimal" :D, truco  "0ah+1" juasjuasjuas.
Lo he probado con el bennuwip2 y pasa, suelta errores distintos con 0BH y 0bH
con la B en mayuscula dice: ; expected("BH") y con la b en minuscula dice  ; expected("H") .
EDIT:
Por ende, tambien pasa con cualquier hexadecimal que termine en B
Pepe = 034410BH;
Title: Re: Error en la definicion de constantes con valor hexadecimal.
Post by: SplinterGU on May 29, 2008, 02:15:24 PM
:D
Title: Re: Error en la definicion de constantes con valor hexadecimal.
Post by: SplinterGU on May 29, 2008, 02:35:55 PM
Listo, solucionado, gracias!
Title: Re: Error en la definicion de constantes con valor hexadecimal.
Post by: SplinterGU on May 29, 2008, 04:17:10 PM
Ejemplos:


PROGRAM Prueba;

import "mod_say"

CONST
  Pepa = 0Ah;
  Pepe = 0Bh;
  pepi = 101b;
  pepo = 10o;
END

BEGIN
  say(pepa);
  say(pepe);
  say(pepi);
  say(pepo);
END


salida:


10
11
5
8


---------


PROGRAM Prueba;

import "mod_say"

CONST
  Pepa = 0Ah;
  Pepe = 0Bh;
  pepi = 1201b;
  pepo = 10o;
END

BEGIN
  say(pepa);
  say(pepe);
  say(pepi);
  say(pepo);
END


salida:


BGDC 0.93 (May 28 2008 03:23:02)
Copyright © 2006-2008 SplinterGU (Fenix/Bennugd)
Copyright © 2002-2006 Fenix Team (Fenix)
Copyright © 1999-2002 José Luis Cebrián Pagüe (Fenix)
Fenix comes with ABSOLUTELY NO WARRANTY; see COPYING for details

const.prg:8: error: ";" expected (0)


--------------

PROGRAM Prueba;

import "mod_say"

CONST
  Pepa = 0Ah;
  Pepe = 0Bh;
  pepi = 101b;
  pepo = 810o;
END

BEGIN
  say(pepa);
  say(pepe);
  say(pepi);
  say(pepo);
END


Salida:

BGDC 0.93 (May 28 2008 03:23:02)
Copyright © 2006-2008 SplinterGU (Fenix/Bennugd)
Copyright © 2002-2006 Fenix Team (Fenix)
Copyright © 1999-2002 José Luis Cebrián Pagüe (Fenix)
Fenix comes with ABSOLUTELY NO WARRANTY; see COPYING for details

const.prg:9: error: ";" expected (0)


EDIT: Como veran, ahora se agrego el chequeo de numeros invalidos... antes, tomaba cualquier cosa como valida, mientras este en el rango de caracteres 0-9, a-f.

EDIT2: Olvide poner ejemplos en mayusculas el especificador de formato numerico.


PROGRAM Prueba;           
                         
import "mod_say"         
                         
CONST                     
  Pepa = 0AH;             
  Pepe = 0BH;             
  pepi = 101B;           
  pepo = 10O;             
END                       
                         
BEGIN                     
  say(pepa);             
  say(pepe);             
  say(pepi);             
  say(pepo);             
END                       


salida


10
11
5
8
Title: Re: Error en la definicion de constantes con valor hexadecimal.
Post by: kim-elet-o on May 29, 2008, 09:20:59 PM
Como dijo R. Andru Martin "Uno se alegra de resultar util".  ;D ;D ;D