Pascal/Turbo Pascal - Evitar salida de rango y error 201

 
Vista:

Evitar salida de rango y error 201

Publicado por JorgeBvd (2 intervenciones) el 19/01/2010 04:43:41
Hola.
Al leer un shortint con un readln(variable); ¿Es posible controlar que si se introduce un numero que se salga del rango el programa lo detecte y poder controlar ese error?
Muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Evitar salida de rango y error 201

Publicado por Diego Romero (996 intervenciones) el 19/01/2010 14:00:18
Sí.

var
Sht: shortint;
C: integer;
S: string;
begin

repeat
Write('Ingrese un shortint: ');
ReadLn(S);
val(S,Sht,C);
if (C <> 0) then
WriteLn('El dato ingresado es incorrecto.');
until C=0;

end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evitar salida de rango y error 201

Publicado por JorgeBvd (2 intervenciones) el 20/01/2010 08:49:42
Muchas gracias por contestar, ademas tan rapido.
Al final lo solucione de la siguiente manera:
Poniendo de ejemplo tu programa.

var
Sht: shortint;
C: integer;
S: string;
begin

repeat
Write('Ingrese un shortint: ');

ReadLn(S); {El problema estaba aqui, es un problema que solo pasa al compilar en
windows no en linux. si introduces 1000 p.ejemplo, el programa intenta asignarlo
a la variable S y se sale de rango}

val(S,Sht,C);
if (C <> 0) then
WriteLn('El dato ingresado es incorrecto.');
until C=0;

end.

La solucion para windows que tome es la siguiente;

repeat
Write('Ingrese un shortint: ');
{$R-} {desactivo la directiva que controla estos errores}
ReadLn(S); {En caso de que el numero introducido este fuera de rango no lo
leera y S conservara su valor anterior}
{$R+} {Vuelvo a activar la directiva}
val(S,Sht,C);
if (C <> 0) then
WriteLn('El dato ingresado es incorrecto.');
until C=0;

end.

Muchas gracias por tu respuesta Diego.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evitar salida de rango y error 201

Publicado por Diego Romero (996 intervenciones) el 20/01/2010 14:27:18
Disculpa, la "solución para windows" que has puesto no tiene sentido. S es un string, le puedes ingresar lo que se te ocurra y nunca dará un error 201 simplemente porque un string no tiene rango alguno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar