Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-06-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
ejecutar codigo de delphi cada 24 horas

buenos dias compañeros tengo una duda y no encuentro como atacarla, estamos por terminar una aplicacion que controla la funcionalidad de un hotel, en diho sistema existe un proceso que es llamado night audit, el cual una persona a la media noche tiene que ira presionar un boton para que cargue las noches y consumos de itinerario que halla tenido el huesped durante el dia, tambien corre procesos que hacen interfax con un pbx, y un punto de restaurant llamado aldelo, pero ahora nos pide el cliente que dicho proceso se ejecute automaticamente, inicialmente los dodigos los mande a procedimientos almacenados los cuales puedo controlar la hora en que quiero que se ejecuten pero las interfaces pbx, aldelo extraigo datos de otras bases de datos por lo cual un procedimiento almacenado no me sirve, he estado viendo el timer de delphi pero ese componente no me resuelve el problema o al menos no he encontrado la forma de utilizarlo, la pregunta es existe la posibilidad de especificarle a delphi que corra dicho codigo diario a las 12 de la noche gracias por cualquier comentario.
Responder Con Cita
  #2  
Antiguo 04-06-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Puedes hacerlo de varias formas, con timers o sin ellos, por ejemplo con decodetime, échale un vistazo a esa función.
Responder Con Cita
  #3  
Antiguo 04-06-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
gracias casimiro voy a buscar info sobre este comando
Responder Con Cita
  #4  
Antiguo 04-06-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Mira este hilo.
Responder Con Cita
  #5  
Antiguo 04-06-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
gracias casimiro ya tengo un timer en mi aplicacion que me muestra la hora y fecha en el sistema pero este timer lo tengo que se este actualizando cada segundo ahora lo que pretendo hacer es que este leyendo una tabla de mi base de datos no resultaria esto muy costoso para la aplicacion? anexo el codigo
Código Delphi [-]
procedure TFrm_Menu.RelojTimer(Sender: TObject);
var d,m,a:Word;
mes,dia:String;
begin
Decodedate(now,a,m,d);
case m of
 1 :mes:='January' ;
 2 :mes:='February' ;
 3 :mes:='March' ;
 4 :mes:='April' ;
 5 :mes:='May' ;
 6 :mes:='June' ;
 7 :mes:='July' ;
 8 :mes:='August' ;
 9 :mes:='September' ;
 10 :mes:='October' ;
 11 :mes:='November' ;
 12 :mes:='December' ;
end;

case DayOfWeek(now) of
 1 :dia:='Sunday' ;
 2 :dia:='Monday' ;
 3 :dia:='Tuesday' ;
 4 :dia:='Wednesday' ;
 5 :dia:='Thursday' ;
 6 :dia:='Friday' ;
 7 :dia:='Saturday' ;
end;
stb_panel.Panels[0].Text:=Application.Hint;
stb_panel.Panels[1].Text:='Date:  '+dia+', '+IntToStr(d)+' of '+mes+' of '+IntToStr(a);
stb_panel.Panels[2].Text:='Time:  '+TimeToStr(Time);
//pretendo hacer algo asi
Qry_ultimacorrida.close;
qry_ultimacorrida.open;
MyDate := EncodeDate(a,m,d);
if Qry_ultimacorrida.fieldbyname('fecha').asdatetime>=muydate then
begin
//desencadena proceso
end;
end;
Responder Con Cita
  #6  
Antiguo 05-06-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero si sólo quieres que se ejecute a una hora determinada, entonces te sobra bastante de ese código, quedaría algo así como:

Código Delphi [-]
private
  var
    bProcesado : boolean;  <- poner a false en el oncreate o en onshow 

...
...
...

procedure TFrm_Menu.RelojTimer(Sender: TObject);
var
  ho,mi,se,mm : Word;
  bProcesado : boolean;
begin
  bProcesado := false;
  Decodetime(now, ho,mi,se,mm);
  if (ho=0) and (mi=0) and (se=0) and (not bProcesado) then
    HacerLoqueTengasQueHacer();
end;


procedure HacerLoQueTengasQueHacer();
begin
  loquesea;
  otracosa;
  //
  bProcesado := true;
end;

La variable bProcesado sirve por si tarda más de un segundo en HacerLoQueTengasQueHacer que no lo vuelva a ejecutar.
Responder Con Cita
  #7  
Antiguo 05-06-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
pues en realidad no el codigo que puse lo hice para darle presentacion a la aplicacion indicando el tiempo y la fecha en la que estamos, muchas gracias por tu ayuda me diste una luz para poder programarlo mil gracias por tu tiempo
Responder Con Cita
  #8  
Antiguo 05-06-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Para eso puedes simplificarlo con los parámetros de FormatDateTime, ejemplos:
Código Delphi [-]
stb_panel.Panels[1].Text:= FormatDateTime('dd-mm-yyyy hh:nn',Now);
Código Delphi [-]
stb_panel.Panels[1].Text:= FormatDateTime('ddd. dd/mm/yyyy  hh:nn',Now);
Responder Con Cita
  #9  
Antiguo 05-06-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
si tiens mucha razon no lo habia pensado asi
Responder Con Cita
  #10  
Antiguo 05-06-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pero si sólo quieres que se ejecute a una hora determinada, entonces te sobra bastante de ese código, quedaría algo así como:

Código Delphi [-]private var bProcesado : boolean; <- poner a false en el oncreate o en onshow ... ... ... procedure TFrm_Menu.RelojTimer(Sender: TObject); var ho,mi,se,mm : Word; bProcesado : boolean; begin bProcesado := false; Decodetime(now, ho,mi,se,mm); if (ho=0) and (mi=0) and (se=0) and (not bProcesado) then HacerLoqueTengasQueHacer(); end; procedure HacerLoQueTengasQueHacer(); begin loquesea; otracosa; // bProcesado := true; end;


La variable bProcesado sirve por si tarda más de un segundo en HacerLoQueTengasQueHacer que no lo vuelva a ejecutar.
me quede pensando en la parte del codigo donde usas la variable bProcesado, la idea es que la aplicacion se este ejecutando siempre asi es que no volveria a ejecutarse hasta que se cerrara y se abriera el programa pero vi algo que sifnifica esto
(ho=0) and (mi=0) and (se=0) = 12:00 de la mañana si es asi esto
indica (ho=59) and (mi=59) and (se=59) esto seria las
12 de la noche??

gracias
Responder Con Cita
  #11  
Antiguo 05-06-2010
Avatar de arturom
arturom arturom is offline
Miembro
 
Registrado: dic 2003
Ubicación: Alicante
Posts: 91
Poder: 21
arturom Va por buen camino
Hola,
ho=0 son las 0 horas,
mi=0 es el minuto 0,
se=0 es el segundo 0,
00:00:00 son las 12 de la noche.
Como no existe la hora 59, pero si los 59 minutos y 59 segundos, si usas, por ejemplo, las 23:59:59 es justo un segundo antes de la media noche.
Las doce del medio día serán entonces las 12:00:00

Saludos
__________________
"No guardes nunca en la cabeza aquello que te quepa en un bolsillo."

Albert Einstein
Responder Con Cita
  #12  
Antiguo 05-06-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
Cita:
Empezado por arturom Ver Mensaje
Hola,
no existe la hora 59, pero si los 59 minutos y 59 segundos, si usas, por ejemplo, las 23:59:59 es justo un segundo antes de la media noche.

Saludos
tienes razon jejej bueno ya es fin de semana creo que con esto ya puedo segui adelante gracios a los dos buen fin de semana
Responder Con Cita
  #13  
Antiguo 07-06-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Sé que llego tarde pero, ¿no sería mejor dejar que sea el sistema operativo quien se encargue? Programas un "cron" (o lo que sea que tenga Windows, que no lo recuerdo) y a correr...
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #14  
Antiguo 07-06-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
ñuño martines pues si tiens razon seria una buea opcion
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
como ejecutar codigo html en delphi? (MAJ) Internet 4 22-07-2008 19:27:41
Ejecutar tarea cada 2 minutos firecode Varios 4 25-05-2007 12:37:32
Ejecutar codigo de dos dentro de Programa Delphi JELIRM Varios 15 06-02-2007 22:38:11
ejecutar aplicación cada hora valera Varios 8 07-05-2005 17:11:59
Ejecutar aplicacion delphi cada cierto tiempo mgaray API de Windows 9 28-01-2005 19:16:20


La franja horaria es GMT +2. Ahora son las 22:12:30.


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