Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   bucle para que se ejecute una serie de instrucciones cada dos horas (https://www.clubdelphi.com/foros/showthread.php?t=95436)

Ricardo2010 21-10-2021 01:33:31

bucle para que se ejecute una serie de instrucciones cada dos horas
 
Hola necesito su ayuda para la siguiente problemática, puede que se facil pero no he podido lograr que funciones
Necesito generar un bucle para que se ejecute una serie de instrucciones cada dos horas, la aplicacion en delphi 10.4 lo que he realizado es lo siguiente
Código Delphi [-]
hora_new:=hora + 1;
  ed_lleva.Text:=IntToStr(debe);//aqui indio cada cuanto debe ejecutarse
  while debe <= hay do // debe inicia en 0 hay es la cantidad total de datos a leer
  begin
    while hora<=hora_new do    // hora es integer que contiene solo la hora y hora_new es cada cuanto se debiera ejecutar
    begin
      i:=0;
      while i<30000 do    // este while lo pongo porque realmente no generar la nueva hora
      begin
         i:=i + 1;
      end;
       q_hora.Open;
       hora:=q_horaHORA.AsInteger;  // con esto tomo nuevamente la hora servidor
       q_hora.close;
    end;
    Form1.Update;
    hora_new:=hora + 1;
    Memo1.Clear;
    recorre;  // este es el codigo que debiera ejecutarse cada 2 hora

  end;

de verdad que he intentado de varias formas que se ejecute cada cierta cantidad de tiempo (horas) pero no logro que funcione , favor su ayuda

Casimiro Notevi 21-10-2021 10:21:42

Aparte de las etiquetas que te ha solucionado [dec], no olvides poner también títulos descriptivos.
Recuerda nuestra guía de estilo, gracias.

Neftali [Germán.Estévez] 21-10-2021 12:05:17

Cita:

Empezado por Ricardo2010 (Mensaje 543643)
Necesito generar un bucle para que se ejecute una serie de instrucciones cada dos horas, la aplicacion en delphi 10.4 lo que he


Una duda. ¿Has probado a implementarlo con un TTimer?
Creo que para estas cosas es mucho más sencillo.


En cuanto al bucle, veo que coges la hora del servidor con esto:

Código Delphi [-]
hora:=q_horaHORA.AsInteger;


Pero en ningun sitio veo que la compares con otra hora para saber si han poasado 2 horas o no. No acabo de entender la lógica.

engranaje 22-10-2021 11:36:20

No tengo claro si necesitas hacerlo de esa forma concreta por algún motivo. Yo entiendo del enunciado que quieres ejecutar un código cada 2 horas. Leyendo el código y como quieres hacerlo dentro de un bucle y ya sabemos lo que pasa con los bucles infinitos se trata de ejecutar una sentencia cada dos horas mientras no se cumpla con una condición de ruptura. De tu código deduzco que esa condición de ruptura es debe <= hay.


Código Delphi [-]
 while debe <= hay do // debe inicia en 0 hay es la cantidad total de datos a leer
 begin
    //2 (horas) * 3600 (segundos/hora) * 1000 (milisegundos en un segundo)  =7200000 (milisegundos a "dormir" la ejecución.
    sleep(7200000); 
    recorre; // este es el código que debiera ejecutarse cada 2 horas
 end;


A mí también me parece mejor utilizar un ttimer para este tipo de cosas. De todas formas si necesitas la hora del servidor, consultar horas en bd y realmente lo que necesitas es una diferencia entre horas este sistema supongo que no te servirá. Como siempre, espero que recorre se encargue de incrementar debe hasta que iguale o supere el valor de hay en algún momento.


La franja horaria es GMT +2. Ahora son las 23:10:50.

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