FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Que se me active el segundo timer
Hola a tod@s de nuevo, despues de estar un tiempo desconectado vuelvo al club con mis dudillas,siento ser tan pesado.
Bueno,lo que me pasa ahora es que he colocado dos timer, vi en otro Hilo que explicabais como hacer que se ejecute mi aplicación a una hora, con ese ejemplo me funciona mi aplicación de lujo pero, a mi se me plantea el problema de que quiero que el ususario pueda cerrar la aplicación a los dos minutos por ejemplo. Para eso me he colocado otro timer y le he llamado TimerEstablecido, pero no llega ha hacerlo. Para llamar a ese timer lo que he echo es activarlo desde el timer que me inicia la aplicación a la hora que le diga, os paso el codigo y haber si veis vosotros algo mal:
Me pasan dos cosas o no me entra al codigo y no la cierra la aplicación o entra a la misma hora que se ejecuta mi aplicación, no se que puede ser Un Saludo a todos y Gracias por vuestro tiempo. Última edición por Nbull fecha: 08-02-2005 a las 10:35:28. |
#2
|
||||
|
||||
No capto la cuestion.
Tienes 2 timer, TimerEstablecido es el de la media noche, y Conexión ???. Una cosa si está clara. En el evento Timer solo entra cuando se finalice el intervalo especificado, por tanto, en ConexionTimer no entrará hasta que finalice el intervalo que lleva, en ese código no aparece el intervalo de Conexion1, así que no puedo dar más detalles. En principio, yo activaría los timer desde el OnCreate de la ventana principal, y así los dos timer van independientes. Ahora mismo, TimerEstablecido depende de Conexion1. OFFTOPIC: Dale una visual a: Archivoini.ReadInteger, Archivoini.ReadTime, Archivoini.ReadDatetime... Y en la unidad DateUtils: Minuteof(datetime) secondof(datetime) Saludito |
#3
|
|||
|
|||
Hola Lepe gracias por responder, he echo lo que tu me has dicho y lo he puesto en el oncreate, te comento, quiero hacer una aplicación que se ejecute todos los dias a las 8 de la tarde pero, que lo que hace es copiar un fichero etc...,quiero que si el usuario le dice que lo haga durante dos minutos que se pare a los dos minutos y hasta el dia siguiente no lo vuelva hacer.
El problema es que una vez que se ejecuta el timer que me lanza la aplicación no para de ejecutarse.Y yo solo quiero que se ejecute una vez al dia. ¿Como lo puedo resolver? Gracias Lepe Un Saludo. |
#4
|
|||
|
|||
Debes desactivar el timer en el evento ontimer del mismo, con la propiedad
procedure tform1.timer1OnTimer(...); begin timer1.enabled:= false; //tus lineas de codigo end; De esta forma el timer1 se ejecutara solo una vez o hasta que desde otro lugar del codigo actives nuevamente el timer1. Salu2 |
#5
|
|||
|
|||
Hola Coco perdona que no te haya contestado antes, pero, como siempre hando pillao de tiempo. Gracias por tu aclaración ya he conseguido lo que que queria.
Un saludo. |
#6
|
|||
|
|||
Sigo sin hacerle funcionar
Perdonar que reabra el Hilo,pero, es que tengo un pequeño problema con los timer.
He colocado dos timer en mi aplicación uno para que me haga una serie de cosas a la hora que le indique el usuario todos los dias, es decir, todos los dias a las 5 de la tarde que haga x cosas y otro para que a los dos minutos me cierre esos procesos. Para eso tengo el siguiente codigo :
Y en el pimer timer tengo lo siguiente:
En el segundo timer:
En el segundo le digo que mañana a las 5 de la tarde o a la hora que sea se ejecuten otra vez los procesos,pero, la put... es que se me ejecutan a los 3 o cuatro minutos otra vez, no lo entiendo por que al iniciar mi aplicación todo funciona bien y hasta que no llega la hora que hay en el archivo config.ini no se ejecuta y es el mismo codigo. Ha ver si veis algo que este mal y como lo puedo solucionar.Yo lo que quiero es que todos los dias a la misma hora me haga lo mismo. PD:El Pc estara encendido y mi programa ejecutandose.No quiero usar el administrador de tareas de Windows. Gracias por vuestro tiempo. Un saludo. |
#7
|
|||
|
|||
Podrías hacer que tu timer principal se active cada segundo, por ejemplo, y que en ese momento verifique la hora del sistema, si esta es igual a la hora de inicio, entonces ejecutas el proceso, de otra forma, no haces nada...
Time es una función de Delphi que devuelve la hora actual del sistema. Saludos... |
#8
|
||||
|
||||
Cita:
A medianoche1 no le cambias la fecha, solo la hora, minutos y segundos, por tanto, faltanmilisegundos no va a tener el valor que esperas!!!. medianoche1 := ahora1 + 1 ; // 1 dia más y ahora haz el recodeTime. Por otra parte ten cuidaddo como pasas los parametros a MillisecondsBetween , si le das el orden contrario, tendrás milisegundos negativos, y estarás poniendo al timer un valor negativo en interval. faltanMilisegundos1:= MillisecondsBetween(ahora1, medianoche1); dependiendo de la hora actual, puede ser positivo o negativo. saludos Última edición por Lepe fecha: 21-02-2005 a las 17:19:25. |
|
|
|