• Domingo 22 de Diciembre de 2024, 12:53

Autor Tema:  validacion captura de datos  (Leído 3965 veces)

eduardoremix

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
validacion captura de datos
« en: Miércoles 24 de Febrero de 2010, 00:20 »
0
Hola tengo una duda, hize una agenda telefonica en pascal y esta para mi casi perfecta lo unico que me falta es validar que cuando el usuario tenga que introducir un numero telefonico( ej. 04141234567) o numero cedula (ej. 12345678) no pueda introducir letras o caracteres ya que el programa se saldria.

este es el procedure que tengo:

procedure llenar_contacto(var p:contacto);

        BEGIN

           writeln('INGRESE UN NOMBRE');
           readln(p.nombre);
           writeln('INGRESE APELLIDO');
           readln(p.apellido);
           writeln('INGRESE N# DE CEDULA');===--------      
           readln(p.cedula);---------------------------------     aqui es donde quisiera validar la captura, p.telefono_casa y p.telefono_movil        
           writeln('INGRESE TELEFONO DE CASA');--------     son de tipo rango( rango es una variable que cree en type
           readln(p.telefono_casa);--------------------------/    rango=0..9999999999;) p.cedula es de tipo longint.
           writeln('INGRESE TELEFONO MOVIL');-----------/
           readln(p.telefono_movil);-----------------------/

         END;
Tambien pense en declararlos como string pero entonces no quedaria bien porque el usuario podria introducir cualquier cosa. Gracias de antemano :good:

droezva

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: validacion captura de datos
« Respuesta #1 en: Miércoles 24 de Febrero de 2010, 09:44 »
0
Hola que tal, pues ya tenía rato que no programaba en Pascal pero me acorde de algunas cosillas!!!
te dejo un ejemplo de validación que yo utilizaba.
Este ejemplo es muy sencillo nada mas esta validado para capturar los digitos, la tecla de retroceso y el enter para indicar que terminamos de ingresar el numero, cabe mencionar que no saldra de la captura de numero hasta que se capture aunque sea un digito. Esta claro que se puede mejorar mucho más. pero bueno creo que te puede servir.

Código: Pascal
  1.  
  2. uses crt;
  3.  
  4. function leerNumero(longitud: integer): string;
  5. var
  6.    numero : string;
  7.    tecla  : char;
  8.    i,x,y  : integer;
  9. begin
  10.      x := whereX;
  11.      y := whereY;
  12.      numero := '';
  13.      i := 1;
  14.      repeat
  15.            tecla := readKey;
  16.            case tecla of
  17.                 '0'..'9' : {Teclas del 0 al 9}
  18.                          if i <= longitud then
  19.                          begin
  20.                               numero := numero + tecla;
  21.                               i := i  + 1;
  22.                          end;
  23.                 chr(8)   : { Tecla de retroceso para borrar el ultimo digito}
  24.                          if i > 1 then
  25.                          begin
  26.                               i := i - 1;
  27.                               numero[i] := ' ';
  28.                               gotoxy(x,y);
  29.                               write(numero);
  30.                               numero := copy(numero,1,i-1);
  31.                         end
  32.            end;
  33.            gotoxy(x,y);
  34.            write(numero);
  35.      until ( tecla = chr(13) ) and ( length(numero) > 0 );
  36.      leerNumero := numero;
  37. end;
  38.  
  39. var
  40.    numeroTxt  : string[20];
  41.    numeroLong : longInt;
  42.    estado     : integer;
  43. begin
  44.      clrscr;
  45.      write('Ingrese un numero maximo de 20 digitos: ');
  46.      numeroTxt := leerNumero(20);
  47.      writeln;
  48.      writeln('Usted ingreso: ',numeroTxt);
  49.  
  50.      {Conversion del Texto a Entero}
  51.      val(numeroTxt,numeroLong, estado);
  52.      writeln('El valor desde la variable longInt: ',numeroLong);
  53.  
  54.      readKey;
  55. end.
  56.  
  57.  

Espero que te sirva. :)

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: validacion captura de datos
« Respuesta #2 en: Miércoles 24 de Febrero de 2010, 14:06 »
0
Mi solución es que uses el procedimiento val() para convertir cadenas en tipos enteros o reales.

Código: Pascal
  1.  
  2. var
  3.   Cad: string;
  4.   Numero, C: integer;
  5. ...
  6. begin
  7. repeat
  8. Write('Ingrese un número: ');
  9. ReadLn(Cad);
  10. Val(Cad, Numero, C);
  11. if C > 0 then WriteLn('Dato erróneo.');
  12. until C = 0;
  13. WriteLn('El número ingresado fue: ',Numero);
  14.  
  15.  

epayan

  • Miembro activo
  • **
  • Mensajes: 41
  • Nacionalidad: mx
    • Ver Perfil
    • http://www.pillin-slk.blogspot.com
Re: validacion captura de datos
« Respuesta #3 en: Jueves 25 de Febrero de 2010, 03:58 »
0
mira en esta liga tengo una uileria, tal vez encuentres lo que estas buscando o parte de la solucion que podrias adaptarla a tus necesidades, aun asi esta abierto el codigo
puedes utilizar una funcion llamada EditaLongInt y adaptarla a tus necesidades

viewtopic.php?f=34&t=40724

eduardoremix

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: validacion captura de datos
« Respuesta #4 en: Jueves 25 de Febrero de 2010, 19:30 »
0
Muchas gracias por las respuestas ya por fin esta completa mi agenda. Saludoss :good: