Pascal/Turbo Pascal - ayuda con validacion!

 
Vista:

ayuda con validacion!

Publicado por santiago (2 intervenciones) el 13/06/2006 01:38:30
como puedo hacer para que en la validacion de datos, la funcion me permita borrar caracteres..??
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:ayuda con validacion!

Publicado por Diego Romero (996 intervenciones) el 13/06/2006 03:32:17
Validación de ¿qué datos?, ¿qué función?, ¿qué caracteres?... otra vez a sacar la bola de cristal.
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:ayuda con validacion!

Publicado por santiago (2 intervenciones) el 13/06/2006 03:51:28
jaja perdon perdon.. staba a los apurones, para validar reales, tengo esta funcion (ver el codigo) que funciona piola, pero no me permite borrar los datos que ingrese durante la ejecucion del programa..
graciass

function validar:real;
var
validos: set of char;
a:string;
aux:real;
codigo:integer;
caracter:char;
primerdigito:boolean;
begin
a:= ' ';
validos:= ['0'..'9',',','.'];
primerdigito:=true;
repeat
repeat
caracter:=readkey;
if caracter in validos then
begin
if (caracter='.') or (caracter=',') then
begin
validos:=validos-['.',','];
caracter:='.';
a:=a+caracter;
end
else
a:=a+caracter;
write(caracter);
end;
primerdigito:= false;
until (caracter in validos) or (caracter = #13);
until (caracter = #13);
val ( a, aux, codigo);
if codigo <> 0 then
begin
writeln ('0');
end
else
begin
vali:= aux;
end;
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

seguimos con la BoLa

Publicado por micropais (209 intervenciones) el 13/06/2006 11:39:46
hola santiago.

Seguimos con la bola de cristal...
he probado tu code , por supuesto no funciona bajo TP7, asumo que usas FreePascal ya que readkey precisa de la unit CRT , aparte de ello vamos a la linea 38

LINE 0038 vali:= aux;

imagino que free pascal permite el uso de variables no definidas anteriormente
como hace Vbasic o javascript

¿vali no esta definido y quisiste decir validos=aux o (diferentes tipos)
o vali es otra variable de tipo set of char?
VALI? -> validos: set of char=aux:real;

Creo que deberias especificar si estas usando FREPASCAL TPx u otros pascal
antes de la funcion.

- En breve te envio otro metodo mas eficaz para recoger culaquier tipo de dato.
Simplemente recogelo en una cadena de texto ,que podrás editar tranquilamente antes de su conversion a cualquier tipo de datos.

Saludos.
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

Otro Code

Publicado por micropais (209 intervenciones) el 13/06/2006 12:00:32
hola santiago.
ahí va una funcion para editar cadenas ó numeros , despues deveras convertir
tu cadena a numero mediante la funcion VAL .
Si te vale el codig postea aquí.

SALUDOS.

_____________________________________________________________

uses crt;
var texto:string;
{...........................................................................}
{ edita una cadena de texto en la posicion x,y indicada la cadena tendra la }
{ misma longitud inicial se debe especificar el filtro 0 ¢ 1 }
{ filtro modo 0 todos los caracteres menos los de control }
{ filtro modo 1 solo numeros del 0 al 9 para conversion por val }
{...........................................................................}
function edita_cadxy(xx,yy:byte;cad:string;tipo:byte):string;
procedure pita;
begin
sound(200);delay(50);nosound;
end;
var
dato:char;
cod_ext:boolean;
longitud_cadena:byte;
cursor_tipo:char;
color_texto:byte;
color_fondo:byte;
ii:byte;
begin
color_texto:=15;
color_fondo:=1;
cursor_tipo:=#29;
cod_ext:=false;
longitud_cadena:=length(cad);
textcolor(color_texto);textbackground(color_fondo);
gotoxy(xx,yy);write(cad);
repeat

dato:=readkey;

if dato=#0 then begin
cod_ext:=true;
dato:=readkey;
end;

if (not cod_ext) then
begin

if dato=#13 then break;

if tipo=0 then begin
if length(cad)<longitud_cadena then
if dato in[#32..#255]then
cad:=cad+dato else pita;
end;
if tipo=1 then begin
if length(cad)<longitud_cadena then
if dato in[#48..#57]then
cad:=cad+dato else pita;
end;

if dato=#8 then
begin
delete(cad,length(cad),1);
end;
gotoxy(xx,yy);
textcolor(color_texto);
textbackground(color_fondo);

for ii:=1 to longitud_cadena+1 do write(' ');

gotoxy(xx,yy);
write(cad);
textcolor(color_texto+128);textbackground(color_fondo);
writeln(cursor_tipo);{}
textcolor(color_texto);textbackground(color_fondo);
end;

cod_ext:=false;

until dato=#27;
for ii:=length(cad)+1to longitud_cadena do cad[ii]:=' ';
cad[0]:=chr(longitud_cadena);
edita_cadxy:=cad;
end;

begin
textcolor(7);textbackground(0);
clrscr;
texto:='3.1415192654';
texto:=(edita_cadxy(10,1,texto,0));
writeln;
writeln(texto); {ahora texto contiene la nueva cadena ya editada y sige siendo string}
readln;
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