Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Algun procedimiento se ejecuta continuamente!! (https://www.clubdelphi.com/foros/showthread.php?t=81360)

Artigas72 07-11-2012 18:10:59

Algun procedimiento se ejecuta continuamente!!
 
Hola a todos, perdón la molestia, y como saben, ya hace un tiempo que no vengo por acá...
Pero bueno...

Tengo una duda para la cuál no he encontrado la respuenta aún...
hay algún evento o procedimiento delphi que se ejecute continuamente?
O sino, hay como programar para que un evento se lance a cuando la fecha encontrada por el
Código SQL [-]
SELECT CURTIME();
Sea >= 8:00:00

Muchisimas gracias de Antemano!
:D

ecfisa 07-11-2012 19:05:36

Hola Artigas72.

Si no entendí mal lo que buscas, podes agregar un componente TTimer (pestaña System) y este código al evento OnTimer del mismo:
Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  with IBQuery1 do
  begin
    Close;
    SQL.Text:= 'SELECT CURRENT_TIME AS HORA FROM RDB$DATABASE';
    Open;
    if FieldByName('HORA').AsString >= '08:00:00' then
    begin
      ShowMessage('Tiempo cumplido, hacer lo que gustes');
      ...
    end;
    ...
  end;
end;
La cadena SQL para obtener la hora funciona en Firebird, tendrás que reemplazarla por la que corresponda a tu manejador de bd.

Saludos.

nlsgarcia 07-11-2012 19:19:57

Artigas72,

Revisa este código:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  T1 : TTime;
  T2 : TTime;

begin

   Loop := True;

   Repeat

      Application.ProcessMessages;

      T1 := Time;
      T2 := StrToTime('08:00:00');

      if (T1 >= T2) then
      begin
         // El código que quieras ejecutar
      end;

   // Permite cancelar el ciclo externamente por medio de la variable global Loop
   until Loop = False;

end;
Espero sea útil :)

Nelson.

Neftali [Germán.Estévez] 07-11-2012 20:07:05

Cita:

Empezado por nlsgarcia (Mensaje 448832)
Revisa este código:

Esto es lo que se llama una espera activa y consume recursos, yo en este caso optaría por un timer.

nlsgarcia 07-11-2012 20:22:59

Artigas72,

Revisa este Link: http://www.ajpdsoft.com/modules.php?...4#.UJqw3me2HQg

En el link encontrarás como implementar tu requerimiento como un Servicio en Windows.

Espero sea útil :)

Nelson.

Artigas72 07-11-2012 20:42:35

Muchisimas gracias
 
Muchisimas gracias a todos,
Las primeras recomendaciones con el Timer me sirvieron...
Ahora estoy probando a ver como podria cargar el
Código SQL [-]
SELECT CURTIME()
con Zeos...
Muchisimas Gracias a todos!
:D

Maniches 07-11-2012 20:52:17

Si es recomendable en la mayoría trabajar con componentes que ya están elaborados. y como dice nuestro amigo Neftali otros métodos consumen recursos.
Saludos.

ecfisa 07-11-2012 20:57:15

Cita:

Empezado por Artigas72 (Mensaje 448857)
Muchisimas gracias a todos,
Las primeras recomendaciones con el Timer me sirvieron...
Ahora estoy probando a ver como podria cargar el
Código SQL [-]
SELECT CURTIME()

Hola.

Tengo entendido que entre los componentes zeos existe el TZQuery y supongo que el uso es muy similar al TIBQuery, así que aún sin conocer el componente, me arriesgo a sugerirte que pruebes este código:
Código Delphi [-]
begin
  with ZQuery1 do
  begin 
     Close;
     SQL.Text:= 'SELECT CURTIME() AS HORA';
     Open;
     ShowMessage(FieldByName('HORA').AsString);
     Close
  end;
end;
(Luego me decis si dije un disparate... :o )

Saludos. :)

Artigas72 08-11-2012 01:33:51

Si, exactamente...
 
Perdon la demora,
Estuve medio complicado hoy...
Pero sí, eso me fije hoy y andaba...
:D Muchisimas gracias a todos!


La franja horaria es GMT +2. Ahora son las 21:52:48.

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