Pascal/Turbo Pascal - TRY, except (Duda)

 
Vista:

TRY, except (Duda)

Publicado por wind (26 intervenciones) el 10/04/2014 23:25:23
Saludos cordiales.

Estoy utilizando el try and except en pascal, lo encuentro más fácil que usando el val.
Sin embargo, si el usuario ingresa un número decimal, aparecerá el mensaje: 'Error datos no validos ingresados '.
Acostumbro a usar el punto para expresar un número decimal.
Si ingreso solo un punto en ambos números, como resultado aparecerá 0.00 (Estoy conforme con ese comportamiento del programa.
Deseo entonces: Si el usuario ingresa un número decimal, no aparezca el resultado 0.00
¿Existe una forma?



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
program excepcion;
uses crt,sysutils;
var
  sa,sb:string;
  a,b,c:real;
begin
    textcolor(white);
    gotoxy(1,1);
    writeln('Programa creado por WIND.');
    gotoxy(1,3);
    try
    begin
      write('Ingrese un numero: ');(*Se ingresa una cadena*)
      readln(sa);
      write('Ingrese otro numero: '); (*Se ingresa otra cadena*)
      readln(sb);
      a:=StrTofloat(sa);(*Se transforma la cadena sa a número decimal
      y el valor se almacena en la variable a *)
      b:=StrTofloat(sb);(*Se transforma la cadena sb a número decimal
      y el valor se almacena en la variable b*)
      c:=a+b;
      end;
      except
      on EConvertError DO Writeln('Error datos no validos ingresados');
    end;
      gotoxy(1,6);
    write('El resultado es: ',c:2:2);(*Me entregará el resultado con dos decimales*)
       gotoxy(1,8);
    writeln('Presione una tecla para finalizar el programa');
    readkey;
END.
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

TRY, except (Duda)

Publicado por ramon (2158 intervenciones) el 15/04/2014 11:51:10
[try] [except] [sysutils] Esta parte no es de pascal estándar o me equivoco me puedes decir de que pascal hablamos.
Si se trata de una unidad creada por ti ponla para poder entenderlo y poderte ayudar.
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

TRY, except (Duda)

Publicado por wind (26 intervenciones) el 15/04/2014 21:24:02
Hola Ramón.

Utilizo la ultima versión de lazarus + freepascal.
En python por ejemplo se usa Try y except. Busqué información referente, y encontré que en pascal también se puede.
http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap11-01-Excepciones.php
En aquella página, se usa los comandos mencionados (try, except), para invocarlos se usa el sysutils.
Desconosco, si usando el try el except, mi problema planteado tenga o no solución.
Ahora bien... si mi problema no tiene solución tendría que usar VAL .

Problema (corrección)

Estoy utilizando el try and except en pascal, lo encuentro más fácil que usando el val.
Sin embargo, si el usuario ingresa un número decimal (ejemplo: 1.67), aparecerá el mensaje: 'Error datos no validos ingresados '.
Acostumbro a usar el punto para expresar un número decimal.
Deseo entonces: Si el usuario ingresa un número decimal, no aparezca el resultado 0.00
Si el usuario ingresa solo un punto , debería aparecer: 'Error datos no validos ingresados '.
¿Existe una forma?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
program excepcion;
uses crt,sysutils;
var
  sa,sb:string;
  a,b,c:real;
begin
    textcolor(white);
    gotoxy(1,1);
    writeln('Programa creado por WIND.');
    gotoxy(1,3);
    try
    begin
      write('Ingrese un numero: ');(*Se ingresa una cadena*)
      readln(sa);
      write('Ingrese otro numero: '); (*Se ingresa otra cadena*)
      readln(sb);
      a:=StrTofloat(sa);(*Se transforma la cadena sa a número decimal
      y el valor se almacena en la variable a *)
      b:=StrTofloat(sb);(*Se transforma la cadena sb a número decimal
      y el valor se almacena en la variable b*)
      c:=a+b;
      end;
      except
      on EConvertError DO Writeln('Error datos no validos ingresados');
    end;
      gotoxy(1,6);
    write('El resultado es: ',c:2:2);(*Me entregará el resultado con dos decimales*)
       gotoxy(1,8);
    writeln('Presione una tecla para finalizar el programa');
    readkey;
END.



http://www.freepascal.org/docs-html/rtl/sysutils/
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

TRY, except (Duda)

Publicado por ramon (2158 intervenciones) el 16/04/2014 00:24:44
Si pero eso es freepascal no pascal pascal asta su versión 7 no reconoce esos procesos.
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