Hay un pequeño problema con la sentencia Switch, si no tabulas el codigo te debe salir un mensaje de error diciendo que no has cerrado el case con end (aunque lo hayas escrito) y no entiende el default, en cambio si lo tabulas si que lo compila bien.
No me preocupa, solo era por informar.
imposible... pon un ejemplo...
tienes otro problema.
splinter@splinter:~/tmp> bgdc switch.prg
BGDC 1.0.0 (Sep 30 2012 20:47:44)
Bennu Game Development Compiler
Copyright (c) 2006-2012 SplinterGU (Fenix/BennuGD)
Copyright (c) 2002-2006 Fenix Team (Fenix)
Copyright (c) 1999-2002 Jos� Luis Cebri�n Pag�e (Fenix)
File switch.dcb compiled (36603 bytes):
Processes 1
Global data 212 bytes
Local data 208 bytes
Private data 0 bytes
Public data 0 bytes
Code 72 bytes
System processes 56
Globals vars 21
Locals vars 27
Private vars 0
Publics vars 0
Identifiers 473
Structs 4
Strings 15 (132 bytes)
splinter@splinter:~/tmp> cat switch.prg
begin
switch(1)
case 1:
end
case 2:
end
end
end
splinter@splinter:~/tmp>
incluso
splinter@splinter:~/tmp> bgdc switch.prg
BGDC 1.0.0 (Sep 30 2012 20:47:44)
Bennu Game Development Compiler
Copyright (c) 2006-2012 SplinterGU (Fenix/BennuGD)
Copyright (c) 2002-2006 Fenix Team (Fenix)
Copyright (c) 1999-2002 Jos� Luis Cebri�n Pag�e (Fenix)
File switch.dcb compiled (36603 bytes):
Processes 1
Global data 212 bytes
Local data 208 bytes
Private data 0 bytes
Public data 0 bytes
Code 72 bytes
System processes 56
Globals vars 21
Locals vars 27
Private vars 0
Publics vars 0
Identifiers 473
Structs 4
Strings 15 (132 bytes)
splinter@splinter:~/tmp> cat switch.prg
begin
switch(1) case 1: end case 2: end end
end
splinter@splinter:~/tmp>
Import "mod_text";
Process Main()
private
byte mivar1=220;
end
begin
loop
delete_text(0);
switch (mivar1)
case 0..3:
write(0,200,100,4,"La variable vale entre 0 y 3, incluidos");
end
case 4:
write(0,200,100,4,"La variable vale 4");
end
case 5,7,9:
write(0,200,100,4,"La variable vale 5 o 7 o 9");
end
default:
write(0,200,100,4,"La variable vale cualquier otro valor diferente de los anteriores");
end
end // switch
frame;
end //loop
end // begin
Este es el codigo de ejemplo que pone osk en su tutorial donde capté este fallo, si lo copias tal cual solo que cambiando las comillas te aparece este mensaje de error:
prueba.prg:19: error: "CASE" expected ( token error: "DEFAULT" ).
en cambio si lo pones asi:
Import "mod_text";
Process Main()
private
byte mivar1=220;
end
begin
loop
delete_text(0);
switch (mivar1)
case 0..3:
write(0,200,100,4,"La variable vale entre 0 y 3, incluidos");
end
case 4:
write(0,200,100,4,"La variable vale 4");
end
case 5,7,9:
write(0,200,100,4,"La variable vale 5 o 7 o 9");
end
default:
write(0,200,100,4,"La variable vale cualquier otro valor diferente de los anteriores");
end
end // switch
frame;
end //loop
end // begin
Compila perfecto.
lo que sucede es que interpreta que default es una etiqueta de salto... por estar pegado a la linea... no tiene que ver con la identacion, pon 1 espacio delante del default y ya compila
voy a tener que poner la excepcion...
gracias!