La Web del Programador: Comunidad de Programadores
 
    Pregunta:  59723 - EVITAR QUE PASCAL ABORTE (ERROR 106: INVALID NUMERIC FORMAT)
Autor:  Alex Fernandez
Buenas
La duda es sencilla, dado este programa:

VAR num: REAL;
BEGIN
READLN(num);
END

Cuando lo ejecute si intriduzco una letra el programa abortara, y me llevara a la pantallita azul de la linea de codigo. Tengo que hacer un programa "serio" para una practica, y me gustaria saber si antes de que aborte puedo mostrar un mensaje tipo "Dato incorrecto vuelva a introducirlo" o lo que sea para evitar que pascal deje de ejecutar el codigo.

Gracias de antemano, y FELIZ NAVIDAD

  Respuesta:  ANGEL BLACK
seria con la funcio IOResult asi, no lo he probado es que no tengo el pascal ahora en mi compu, :

{----------------------------}
VAR num: REAL;
begin
repeat {para repetir hasta que se introduzca bien el numero}
{$I-} {Desactivamos el control de error}
READLN(num);
{$I+} {Activamos el control de error, en esto no estoy seguro, sino te funciona quita esta linea y la colocas al final}
{IOResult =0 el valor esta introducido correctamente}
if IOResult <> 0 then
WriteLn(´Valor Inválido´)
readkey;
else
WriteLn(´Valor permitido´);
readkey;
UNTIL (R=0);
end.
{----------------------------}

  Respuesta:  ANGEL BLACK
seria con la funcio IOResult asi, no lo he probado es que no tengo el pascal ahora en mi compu, :

{----------inicio------------------}
VAR num: REAL;
begin
repeat {para repetir hasta que se introduzca bien el numero}
{$I-} {Desactivamos el control de error}
READLN(num);
{$I+} {Activamos el control de error, en esto no estoy seguro, sino te funciona quita esta linea y la colocas al final}
{IOResult =0 el valor esta introducido correctamente}
if IOResult <> 0 then
WriteLn(´Valor Inválido´)
r=1;
readkey;
else
WriteLn(´Valor permitido´);
r=0;
readkey;
UNTIL (R=0);
{sigues trabajando con tu variable ya sea en suma resta multi, etc, etc......}
end.
{-----------fin-----------------}