Discussion:
Actualizar hora mientras espera entrada por teclado
(demasiado antiguo para responder)
HADES
2004-05-19 16:39:57 UTC
Permalink
hola estoy haciendo un programa y quiero q en el menu principal
mientras espera a que elija una de las opciones propuestas me muestre
en la parte inferior de la pantalla la fecha y la hora y que la hora
se vaya actualizando cada segundo como puedo hacer que espere la
entrada de la opcion y que a la vez me vaya actualizando la hora.

gracias
Fco. Javier Espejo
2004-05-20 16:43:46 UTC
Permalink
Lo lógico es que uses hilos, pero como creo que si no lo has pensado es que
no quieres, te voy a dar una solución ineficiente. Aunque también puedes
dependiendo de la plataforma usar signal() o fork().

menu();
mientras(!tecla_pulsada()) /* Espera activa*/
mostrar_hora();
c=coger_tecla();

La función tecla_pulsada() depende del entorno, pero supongo que usas
Borland, así que podrás buscar en conio.h.

--------------------------------
¿Sistemas Operativos? ¡Visitala!
http://www.arrakis.es/~jespejo
***@ESTOarrakis.es
--------------------------------
HADES
2004-05-21 14:21:51 UTC
Permalink
Post by Fco. Javier Espejo
Lo lógico es que uses hilos, pero como creo que si no lo has pensado es que
no quieres, te voy a dar una solución ineficiente. Aunque también puedes
dependiendo de la plataforma usar signal() o fork().
menu();
mientras(!tecla_pulsada()) /* Espera activa*/
mostrar_hora();
c=coger_tecla();
La función tecla_pulsada() depende del entorno, pero supongo que usas
Borland, así que podrás buscar en conio.h.
LA FUNCION tecla_pulsada() q devuelve true o false dependiendo de si
se ha pulsado alguna tecla o no?, uso borland turbo c como se llama
esa funcion en conio.h?.
p.d.: no he pensado en hilos porque no tengo ni puta idea de hilos.
GRACIAS ;)
Fco. Javier Espejo
2004-05-21 16:25:32 UTC
Permalink
Busca en la ayuda, o directamente en el archivo de cabecera conio.h, seguro
que no es difícil encontrarla. Por cierto, no devuelve un boolean, sino un
entero positivo si se ha pulsado una tecla, y un cero si no se ha pulsado.

--------------------------------
¿Sistemas Operativos? ¡Visitala!
http://www.arrakis.es/~jespejo
***@ESTOarrakis.es
--------------------------------
HADES
2004-05-24 19:49:22 UTC
Permalink
hola ya me funciona muy bien, pero ahora no se me ocurre nada para
evitar que se escriba una hora encima de otra la pinto del mismo color
del fondo o le pinto un rectangulo del mismo color q el fondo pero no
se me ocurre nada para evitar el parpadeo de la actualizacion. se te
ocurre algo?

GRACIAS X TODO ;)
Fco. Javier Espejo
2004-05-24 21:26:20 UTC
Permalink
El parpadeo se quita precisamente poniendo esperas, prueba a poner una
espera de 100ms o de 250ms mejor, así no se notará el parpadeo
prácticamente, y además mejorarás el rendimiento del sistema. Una espera más
grande podría tener el efecto de que hay un cierto retraso entre tecla y
tecla.

--------------------------------
¿Sistemas Operativos? ¡Visitala!
http://www.arrakis.es/~jespejo
***@ESTOarrakis.es
--------------------------------
HADES
2004-05-25 14:08:45 UTC
Permalink
que pasa tio, aun con tu consejo de retardo sigue apreciandose el
parpadeo, te muestro el codigo a ver si ves el fallo. gracias


.
.
.

while(!kbhit())
{
delay(250);
strcpy(h,MostrarHora(h));
}
.
.
.


char * MostrarHora (char * h)
{
struct tm *time_now;
time_t secs_now;
char str[80];

tzset();
time(&secs_now);
time_now = localtime(&secs_now);
strftime(str,80,"Son las %I:%M:%S (%Z) %A, %B %d 20%y",time_now);
setcolor(BLUE); //COLOR DEL FONDO
outtextxy(100,300,h);
setcolor(WHITE); //COLOR DE LA LETRA
outtextxy(100,300,str);

return (str);
}


GRACIAS ;)

Loading...