Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-03-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Mantener un timer ejecutandose cada minuto dentro de la aplicacion

Hola compañeros, estoy haciendo una aplicación que contiene un formulario de recordatorios, el caso es que quiero que me revise cada minuto la tabla de recordatorios para verificar si existe algun evento más próximo, si lo encuentra me lo muestra, no importando en qué formulario de la aplicación esté ubicado.

Alguien sabe cómo puedo hacer esto

Gracias y saludos
Responder Con Cita
  #2  
Antiguo 16-03-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Thumbs up

El componente Timer tiene una propiedad numerica que se llama Interval la cual define el intervalo de tiempo que el Timer debe ejecutar la accion de su unico evento OnTimer, esta propiedad esta dada en milisegundo, es decir
1 segundo=1000 Milisegundo.
Por ejemplo si quisiera se ejecute la accion cada minuto(aunque no es muy exacto pero vale) solo debo hacer la siguiente regla de tres simple:
Si 1 Segundo=1000 Milisegundo
entonces 60 segundos(osea un minuto) sera equivalente a X milisegundo:
Haciendo los calculos: X=60*1000;
Entonces concluimos que para que el Timer ejecute una determinada accion cada minuto, se debe poner su propiedad Interval=60000.
Saludos.....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 14-04-2009 a las 21:26:44.
Responder Con Cita
  #3  
Antiguo 16-03-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Lightbulb Ojo

Se me olvido comentarles por que no es muy exacto la ejecucion de un timer
que se pone a un determinado intervalo:
La razon es, como un Timer es un hilo y por ende es un proceso para el Planificador del Sistema Operatimo por tal motivo recibe tambien un Quantum(tiempo de ejecusion) por estar trabajando en sistemas Operativos multitarea y multiproceso, puede ocurrir el caso que nuestro Timer ya le tocara en tiempo real la ejecucion de su evento OnTimer pero el Sistema operativo no le ha dado Quantum (no es su turno)es decir otro proceso esta haciendo el uso de la CPU y ya cuando le toca su turno se retraso en el tiempo real que debiera realizar su evento.
Es por ese motivo que se retrasaria en puequeños nanosegundos,milisegundos (claro en intervalos pequeños no se siente mucho la diferencia)su ejecucion que a la larga seria horas y esto se complica mucho mas si tenemos muchos programas habiertos.
Edito: Aqui tienen algo para profundizar el tema
Espero haberme explicado.....
Abrazos a todos...
RGS
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 16-03-2009 a las 23:28:54.
Responder Con Cita
  #4  
Antiguo 17-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hombre, entiendo tu preocupación por la exactitud y es bueno que lo aclares, pero no creo que unos cuantos nanosegundos afecten para el recordatorio de una cita. Y es que no me queda claro por qué comentas que, a la larga la diferencia sería de horas. No creo que esto afecte para el problema en cuestión. El timer se activará, más o menos, cada minuto, y se reiniciará la cuenta, con lo cual no importan ya los milisegundos acumulados hasta el momento.

¿O hay algo que no estoy viendo?

// Saludos
Responder Con Cita
  #5  
Antiguo 17-03-2009
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
tal vez si te hicieras un procedure...

sip...

a lo mejor si hechas a andar un procedimiento se resuelve tu problema...

si utilizas los milisegundos checa en la ayuda que trae delphi...

y veras...

oarece que la abreviatura que utiliza es msecs...

haber si en algo te sirve este procedimiento:
Código Delphi [-]
procedure Delay(msecs:integer);
 var
    FirstTickCount:longint;
 begin
      FirstTickCount:=GetTickCount;
      repeat
            Application.ProcessMessages;
      until ((GetTickCount-FirstTickCount) >= Longint(msecs));
 end;

y la mandas llamar asi en milisegundos:

Código Delphi [-]

procedure TForm2.ButtonClick(Sender: TObject);
begin
Delay(2000);  //lo que va entre parentesis son los segundos en mi caso son 2 segundos los que neceito... ya dependera de ti tal vez con ciclos ajustarla...
end;

sele pues y espero y te sirva!!!

saludos !!!
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!!

Última edición por krlox31416 fecha: 17-03-2009 a las 05:00:23. Razón: me faltava una h al
Responder Con Cita
  #6  
Antiguo 17-03-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Lightbulb

Cita:
Hombre, entiendo tu preocupación por la exactitud y es bueno que lo aclares, pero no creo que unos cuantos nanosegundos afecten para el recordatorio de una cita. Y es que no me queda claro por qué comentas que, a la larga la diferencia sería de horas. No creo que esto afecte para el problema en cuestión. El timer se activará, más o menos, cada minuto, y se reiniciará la cuenta, con lo cual no importan ya los milisegundos acumulados hasta el momento.
No estaba hablando de exactitud en realidad solo estaba haciendo una pequeña aclaracion,pero para ilustrarte como ejemplo base aunque ya fuera del tema El movimiento de rotacion de la tierra que aparentemente lo hace en 24 horas, pero en realidad no es asi sino que lo hace en:24,016438....horas, que en un año esa fraccion se hace 6 horas, osea que la tierra para dar una vuelta alrededor del sol tarda 365 dias y 6 horas mas (Movimiento de traslacion), es por eso que esas 6 horas de retrazo en el tiempo real del actual calendario gregoriano en 4 años se hacen 24 horas y por eso es necesario aumentar a febrero 1 dia mas, si los cientificos no se hubieran dado cuenta de eso, estariamos muy retrazado con respecto al tiempo real. No crees.
Ahora aplicando esa misma logica y conociendo un poquito del planificador del sistema operativo, deducimos que puede pasar lo mismo ,"claro ustedes diranpequeños nanosegundos",esos pequenas fraccionesde segundos se pueden convertir en horas como lo he ilustrado con el ejemplo.Quisas a algunos diran que importa eso, bueno eso es depende de lo que se quiera hacer,y depende de cada uno; yo solo quise hacer una pequeñita aclaracion.
Un gran saludos a todos....
RGS
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mantener viva la aplicación HombreGordo Varios 9 04-11-2008 20:57:24
quitar icono un lado del reloj, sin desactivar aplicacion ejecutandose sakuragi Windows 7 16-01-2008 17:27:49
mantener mi aplicacion selecionada perico OOP 9 27-04-2006 01:16:29
esta ejecutandose una aplicacion en NT? jmbarrio API de Windows 5 13-01-2005 10:49:04
Aplicación ejecutándose en ordenador remoto Javi2 Varios 0 27-07-2004 14:29:56


La franja horaria es GMT +2. Ahora son las 09:00:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi