close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#1393 closed defect (worksforme)

Show no oculta los mensajes de la inclusión de paquetes

Reported by: imendez Owned by: Jorge
Priority: normal Milestone: Mantainance
Component: GUI Tol Packages Version: head
Severity: normal Keywords:
Cc:

Description

Hola, la función Show no es capaz de ocultar los mensajes que se muestran al incluir un paquete. Se puede ver con el siguiente código:

Real Show(0, "ALL");
WriteLn("Hola");
#Require MMS;
Real Show(1, "ALL");
WriteLn("Adios");

Un saludo.

Change History (4)

comment:1 Changed 13 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: newclosed

No sé qué es lo que puede estar pasando. Lo miraré.

comment:2 Changed 13 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: closedreopened

comment:3 Changed 13 years ago by Víctor de Buen Remiro

Resolution: worksforme
Status: reopenedclosed

Ya veo lo que pasa: el #Require es una macro del parser que se ejecuta en tiempo de reconocimiento sintáctico, es decir antes de que se ejecute el código por lo que el Show(0,"ALL") aún no ha tenido lugar cuando se hace el #Require.

Esto es así porque de otra forma si usaras una estructura o una clase definida en el paquete el parser no la reconocería y daría error sintáctico.

Si queremos eliminar los mensajes deberemos ejecutar el Show(0,"ALL") antes, bien en la ventana de eval bien en un archivo TOL compilado antes del que contenga el #Require

No sé si es un defecto o no ni si supone mayor o menor problema pero no hay nada que hacer al respecto,

Gracias por reportarlo de todas formas porque es algo que hay que tener en cuenta y que no sabíamos.

comment:4 Changed 13 years ago by imendez

Vale, entendido. De hecho estaba reportando otro ticket relacionado con #Require y me he acordado de este.

Lo nuevo que me ocurre es que #Require se compila aunque haya un error sintáctico, pero claro al leer tu explicación queda claro que es porque el Parser se ejecuta después:

Set CjtoError = EvalSet(
#Require MMS

Al compilar, primero se incluye el paquete y después devuelve un error sintáctico (por cierto, en la segunda línea, en lugar de en la primera).

Un saludo.

Note: See TracTickets for help on using tickets.