PDA

Ver la Versión Completa : Algun procedimiento se ejecuta continuamente!!


Artigas72
07-11-2012, 18:10:59
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
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:

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:

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
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?name=News&file=article&sid=484#.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 a todos,
Las primeras recomendaciones con el Timer me sirvieron...
Ahora estoy probando a ver como podria cargar el
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
Muchisimas gracias a todos,
Las primeras recomendaciones con el Timer me sirvieron...
Ahora estoy probando a ver como podria cargar el
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:

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
Perdon la demora,
Estuve medio complicado hoy...
Pero sí, eso me fije hoy y andaba...
:D Muchisimas gracias a todos!