GARANTIR DESCONTO

Fórum Como programar o TTimer efetuar uma rotina em tal hora? #357016

11/04/2008

0

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


Helio Nascimento

Helio Nascimento

Responder

Posts

11/04/2008

Edilcimar

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


Responder

Gostei + 0

12/04/2008

Paullsoftware

Se entendi bem a sua dúvida, você não poderia ficar testando a hora usando um if simples não?
if horatual = horadesejada then
 begin
  //execute procedimentos
 end;

espero ter ajudado :wink:


Responder

Gostei + 0

12/04/2008

Marco Salles

se entendi sua duvida tecnicamente é mais correto , criar um serviço e
usar TTheads para o processamento


Responder

Gostei + 0

14/04/2008

Helio Nascimento

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.


Responder

Gostei + 0

14/04/2008

Rodc

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;



Responder

Gostei + 0

14/04/2008

Nerdex

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:

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.


Responder

Gostei + 0

14/04/2008

Helio Nascimento

Obrigado a todos. São variáveis de soluções interessantes!

Muito Obrigado pela atenção aos colegas que me responderam.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar