Como programar o TTimer efetuar uma rotina em tal hora?
Colegas
Como posso programar o TTimer para disparar uma rotina em tal hora.
Estou propondo o desligamento do sistema que inicia as 07:00 para desligar as 16:45 m , acredito que haja uma fórmula para se chegar ao milésimos de segundos que o TTime precisa para disparar.
Qualquer ajuda será bem vinda.
Hélio
Como posso programar o TTimer para disparar uma rotina em tal hora.
Estou propondo o desligamento do sistema que inicia as 07:00 para desligar as 16:45 m , acredito que haja uma fórmula para se chegar ao milésimos de segundos que o TTime precisa para disparar.
Qualquer ajuda será bem vinda.
Hélio
Helio Nascimento
Curtidas 0
Respostas
Edilcimar
11/04/2008
existe a função para pegar a hora atual, coloque-a em uma variável ttime, coloque o timer o qual cada segundo vale mil, a cada X segundos incremente a variável, verifique se a mesma coincide com o horário desejado, caso positivo, dispare o evento desejado
GOSTEI 0
Paullsoftware
11/04/2008
Se entendi bem a sua dúvida, você não poderia ficar testando a hora usando um if simples não?
espero ter ajudado :wink:
if horatual = horadesejada then begin //execute procedimentos end;
espero ter ajudado :wink:
GOSTEI 0
Marco Salles
11/04/2008
se entendi sua duvida tecnicamente é mais correto , criar um serviço e
usar TTheads para o processamento
usar TTheads para o processamento
GOSTEI 0
Helio Nascimento
11/04/2008
Marco Salles - Obrigado pela participação mas, o seu colega aqui não sabe desenvolver uma TTheads! Nunca tentei, por não necessitar e correr atrás.
Não tenho idéia de como desenvolver!!. Desculpe-me, mas é isso..!
paullsoftware / Sua Idéia não pensei. Vou testá-la.
Edilcimar /Obrigado também por participar. Vou tentar.
Não tenho idéia de como desenvolver!!. Desculpe-me, mas é isso..!
paullsoftware / Sua Idéia não pensei. Vou testá-la.
Edilcimar /Obrigado também por participar. Vou tentar.
GOSTEI 0
Rodc
11/04/2008
Se você testar a hora a cada segundo, você estará consumindo processamento desnecessário da máquina. O que você precisa é calcular quantos milisegundos faltam para o seu evento ocorrer.
var
dataFutura: TTime;
begin
dataFutura := StrToTime("16:45");
Timer1.Interval := MilliSecondsBetween(Time(), dataFutura);
Timer1.Enabled := true;
end;GOSTEI 0
Nerdex
11/04/2008
Olá,
Uma alternativa plausível, sofisticada e mais profissional é ´passar´ esta tarefa para o Sist. Operacional, utilizando o agendamento de tarefas do Windows conforme este exemplo:
Pesquise outros parâmetros que podem ser passados.
Uma alternativa plausível, sofisticada e mais profissional é ´passar´ esta tarefa para o Sist. Operacional, utilizando o agendamento de tarefas do Windows conforme este exemplo:
WinExec(´schtasks /CREATE /TN NOMEdaTAREFA /TR C:\Windows\System32\Calc.exe /RU "NT AUTHORITY\SYSTEM" /SC diariamente /ST 16:00:00´,SW_HIDE);
Pesquise outros parâmetros que podem ser passados.
GOSTEI 0
Helio Nascimento
11/04/2008
Obrigado a todos. São variáveis de soluções interessantes!
Muito Obrigado pela atenção aos colegas que me responderam.
Muito Obrigado pela atenção aos colegas que me responderam.
GOSTEI 0