Domingo 22 de Diciembre de 2024, 21:27
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Pascal
»
Re: No Encuentro El Error!!!!.
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Re: No Encuentro El Error!!!!. (Leído 1746 veces)
_.B._
Miembro activo
Mensajes: 88
Re: No Encuentro El Error!!!!.
«
en:
Jueves 22 de Enero de 2004, 22:48 »
0
Saludos!.
Cansancio, privación del sueño (o por lo menos de razonables horas del mismo), o simple ignorancia (no de forma excluyente) pueden ser la causa de que no encuentre el porqué éste segmento de un programa que estoy diseñando (mas de 1000 lineas, no vale la pena que lo pegue completo) entra en un ciclo cuando para el Código no introduzco datos.
El lenght va a ser 0, pero luego toma un valor nulo y entra con length = 0 y cae en el ciclo.
Código: Text
PROGRAM Prac002;
USES CRT;
VAR Dd,Mm,Aa:WORD;
Codigo:STRING;
Resp:CHAR;
PROCEDURE LeerTexto (WriteTexto:STRING; VAR OkeTexto:STRING;
RespAttr:BYTE);
VAR Oke:BOOLEAN;
X,Y,X2,Y2,TAtt1:BYTE;
BEGIN
X:=WHEREX;
Y:=WHEREY;
REPEAT
Oke:=TRUE;
GOTOXY (X,Y);
CLREOL;
WRITE (WriteTexto,': ');
TAtt1:=TEXTATTR;
TEXTATTR:=RespAttr;
READ (OkeTexto);
TEXTATTR:=TAtt1;
{}
IF LENGTH (OkeTexto) = 0 THEN
BEGIN
X2:=WHEREX;
Y2:=WHEREY;
TEXTCOLOR (14);
WRITE (#7);
WRITE (' No ha escrito nada!.');
READKEY;
GOTOXY (X2,Y2);
TEXTCOLOR (4);
CLREOL;
Oke:=FALSE
END
{}
UNTIL Oke;
WRITELN
END;
PROCEDURE LeerFecha (WriteTexto:STRING; VAR Dd,Mm,Aa:WORD;
RespAttr:BYTE);
VAR Oke:BOOLEAN;
X,Y,X2,Y2,TAtt1:BYTE;
BEGIN
X:=WHEREX;
Y:=WHEREY;
WRITELN (WriteTexto);
WRITE ('(DD, MM, AAAA, cada uno seguido de <ENTER>): ');
TAtt1:=TEXTATTR;
TEXTATTR:=RespAttr;
X2:=WHEREX;
Y2:=WHEREY;
CLREOL;
WRITE (' / /');
GOTOXY (X2,Y2);
READ (Dd);
GOTOXY (X2,Y2);
WRITE (Dd:2,'/');
READ (Mm);
GOTOXY (X2,Y2);
WRITE (Dd:2,'/',Mm:2,'/');
READ (Aa);
GOTOXY (X2,Y2);
WRITELN (Dd:2,'/',Mm:2,'/',Aa:4);
TEXTATTR:=TAtt1
END;
BEGIN
REPEAT
TEXTBACKGROUND (7);
CLRSCR;
TEXTCOLOR (0);
WRITELN (' Introduzca los datos de la Póliza a vender,');
WRITELN ('y los datos del Automóvil a asegurar:');
WRITELN;
WRITELN;
TEXTCOLOR (4);
LeerTexto ('Código de la Póliza (0 para salir)',Codigo,117);
WRITELN;
LeerFecha ('Fecha de Adquisición de la Póliza',Dd,Mm,Aa,117);
WRITELN;
WRITE (' ¿Desea procesar otra Póliza? (s/n) ');
Resp:=UPCASE (READKEY)
UNTIL Resp = 'N';
WRITELN;
WRITE (' FIN.');
READKEY
END.
Publiqué el .PAS en:
http://mipagina.cantv.net/bernardolg/tp/FECHATXT.PAS
(click con el boton derecho del MOUSE, y "Guardar destino como...").
GRACIAS a quien intente ayudarme.
Atte.
Bernardo L.
Tweet
¡Olmo, dame peras!
www.BernardoLG.net
DriverOp
Miembro MUY activo
Mensajes: 201
Re: No Encuentro El Error!!!!.
«
Respuesta #1 en:
Viernes 23 de Enero de 2004, 16:09 »
0
Hola Bernardo.
Vengo desde LWP. No he probado el código pero lo primero que noto es que estas usando Read para leer un string lo cual puede causar problemas con el valor asignado en la variable pues esta debe terminar en #0, cambia por ReadLn.
Ahora descargo el código y lo pruebo por mi cuenta.
DriverOp
Miembro MUY activo
Mensajes: 201
Re: No Encuentro El Error!!!!.
«
Respuesta #2 en:
Viernes 23 de Enero de 2004, 16:14 »
0
Efectivamente es ese el problema, entre otros. Cuando pides la fecha no estás validando el rango de los números ingresados, deberías pedir esos datos primero en un string, tratar de convertir a número y si la conversión falla volver a pedir.
_.B._
Miembro activo
Mensajes: 88
Re: No Encuentro El Error!!!!.
«
Respuesta #3 en:
Sábado 24 de Enero de 2004, 02:13 »
0
Ouch!!.
Se me salió lo novato!!.
GRACIAS!!. No tenia ni idea que usar el
read
en lugar del
readln
me pudiera traer problemas.
Citar
Cuando pides la fecha no estás validando el rango de los números ingresados
ya se, ya se... es que con la prisa
Bueno, como ya lo tengo que entregar el Lunes, me sale meterle mas
Gracias!.
Bernardo L.
¡Olmo, dame peras!
www.BernardoLG.net
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Pascal
»
Re: No Encuentro El Error!!!!.