Pascal/Turbo Pascal - Formato Dia/Mes/Año, como leo las barras??URGENTE!

 
Vista:

Formato Dia/Mes/Año, como leo las barras??URGENTE!

Publicado por Laura (3 intervenciones) el 08/01/2001 00:00:00
Estoy haciendo un programa de simulacion de altas y bajas en los hospitales. Necesito que el usuario introduzca la fecha de alta y de baja en formato dia/mes/año, el problema esta en las "/", que al leermelas me las da como formato numerico no valido. A que puede ser debido? Como solucionarlo?.Aclaración, las barras ha de introducirlas el usuario.
Gracias anticipadamente.
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:Formato Dia/Mes/Año, como leo las barras??URGEN

Publicado por Cris (29 intervenciones) el 09/01/2001 00:00:00
Te manda error, por que la o las variables a las que les estas asignando es de tipo entero, y la "/" es un caracter.
Puedes solucionarlo utilizando un string para leer la fecha completa, y despues convertirla a entero, validarla, etc...
ejemplo:

var fecha : string[10];

begin
write ( ´Introduzca fecha dd/mm/aa : ´ );
readln(fecha);
.
.
{codigo de validacion, conversion, etc...}
.
.
end.

Asi corregiras ese error y puedes hacer mejor tu programa, puesto que si el usuario por error escribe un * o una e, o lo que sea que no sea numero, tronara tu programa.
si tienes dudas de como validar una cadena para que este en correcto formato de fecha, puedes escribirme.

Saludos

Cristina

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

Yo otra vez

Publicado por Laura (3 intervenciones) el 09/01/2001 00:00:00
Gracias por resolverme la duda de cómo poner la fecha en un formato con barras. Ahora tengo un nuevo problema, y es que no sé cómo puedo convertir ese string a un entero ni validarlo, ya que necesito compararlo para comprobar si la fecha es correcta además de implementar una función que diga si el año es bisiesto o no. Esto ya lo sé hacer, pero ¿cómo puedo, leyéndolo como string, convertirlo a entero para que me siga realizndo el resto de funciones? Contéstame rápido, por favor, y muchísimas gracias nuevamente. Laura.
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

son muchas opciones

Publicado por angel mauro (13 intervenciones) el 09/01/2001 00:00:00
Bueno en realidad que son varias las opciones que tienes pero debes saber acerca de la función copy y de la funcion val, te recomendaria un tutorial de turbo pascal ya que lo que necesitas saber es bastante como para escribirlo aqui.

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

De nuevo yo CRIS

Publicado por Laura (3 intervenciones) el 09/01/2001 00:00:00
Hola
Sigo teniendo los mismos problemas derivados sobre todo por no saber como transformar un string a entero, creo que te refieres a la funcion ord, pero al necesitar comparar el resultado con otros datos no se aplicarlo bien, me podrias explicar como hacerlo? Debo comprobar por ejemplo que los meses no tengan 32 dias o más como hago eso si la fecha fue introducida como un string?, muchas gracias por tu atencion.
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:De nuevo yo CRIS

Publicado por Cris (29 intervenciones) el 10/01/2001 00:00:00
Hola Laura, mira, la funcion que hace eso, es val, que te convierte un string en un entero o real, segun. Pero en este caso, sera entero, el procedimiento val(str;var temp;var error) recibe estos tres parametros, str: cadena a convertir, temp: entero donde se guardara el numero, y error: entero que devuelve 0 si la cadena fueron puros numeros, diferente de cero si hubo un caracter no numerico. Te escribo un mini codigo para que te des una idea, las validaciones extras se las pones, este codigo solo checa que sean numeros, las divide en dd, mm y aa y las pone en variables enteras:

var str: string[10]; {para leer la fecha}
buffer:string[3]; {para guardar dia o mes..}
error:integer; {para el error}
dia,mes,año:integer; {para la fecha}

begin
write(´escriba fecha dd/mm/aa ´);
readln(str); {leer fecha}
buffer[1]:=str[1];{copia el primer numero}
buffer[2]:=str[[2];{copia el segundo numero}
val(buffer; var dia; var error); {conversion}
if(error<>0)then{si la cadena tiene un caracter}
write(´Escriba dia en formato numerico´);
else {fue numero}
begin
buffer[1]:=str[4];{copia el primer numero}
buffer[2]:=str[[5];{copia el segundo numero}
val(buffer; var mes; var error);
if(error<>0)then {si la cadena tiene un caracter}
write(´Escriba mes en formato numerico´);
else {fue numero}
begin
buffer[1]:=str[7];{c
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