Autor Tema: Error en la definicion de constantes con valor hexadecimal.  (Leído 2603 veces)

kim-elet-o

  • Sr. Member
  • ****
  • Mensajes: 397
  • Karma: 8
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
|/
|\im-elet-o el yayo programador.

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: Error en la definicion de constantes con valor hexadecimal.
« Respuesta #1 en: Mayo 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;
« última modificación: Mayo 29, 2008, 12:53:26 pm por dcelso »
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12870
  • Karma: 377
Re: Error en la definicion de constantes con valor hexadecimal.
« Respuesta #2 en: Mayo 29, 2008, 02:15:24 pm »
:D
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12870
  • Karma: 377
Re: Error en la definicion de constantes con valor hexadecimal.
« Respuesta #3 en: Mayo 29, 2008, 02:35:55 pm »
Listo, solucionado, gracias!
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12870
  • Karma: 377
Re: Error en la definicion de constantes con valor hexadecimal.
« Respuesta #4 en: Mayo 29, 2008, 04:17:10 pm »
Ejemplos:

Código: [Seleccionar]
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:

Código: [Seleccionar]
10
11
5
8

---------

Código: [Seleccionar]
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:

Código: [Seleccionar]
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)

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

Código: [Seleccionar]
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:

Código: [Seleccionar]
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.

Código: [Seleccionar]
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

Código: [Seleccionar]
10
11
5
8
« última modificación: Mayo 29, 2008, 04:27:26 pm por SplinterGU »
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

kim-elet-o

  • Sr. Member
  • ****
  • Mensajes: 397
  • Karma: 8
Re: Error en la definicion de constantes con valor hexadecimal.
« Respuesta #5 en: Mayo 29, 2008, 09:20:59 pm »
Como dijo R. Andru Martin "Uno se alegra de resultar util".  ;D ;D ;D
|/
|\im-elet-o el yayo programador.