Ajuda com Componete Timer
Gostaria de implatar uma função usando o componete Timer para saber o tempo decorrido de determinada tarefa ?
Alves_sp
Curtidas 0
Respostas
Carlosrm
05/01/2008
ALVES_SP,
como ninguém até agora respondeu seu post, vou sugerir o seguinte:
qualquer que seja a função que você crie, será sempre preciso passar/informar dois valores:
1) a hora em que iniciou a tarefa demorada, e
2) a hora em que terminou.
Depois, é subtrair a primeira da segunda e obter o tempo decorrido.
Observe que a tarefa pode começar às 23:50 de um dia e terminar às 00:05 do outro dia.
Você teria que
1º) criar uma função,
2º) chamar esta função no ínicio da tarefa, passando o horário inicial,
3º) chamar de novo esta função no final da tarefa (horário final) e
calcular a diferença para obter o tempo decorrido.
E até agora, não houve necessidade de utilizar o componente TTimer.
Se vc tiver oito ( 8) tarefas demoradas no seu sistema, terá que fazer dezesseis (16) chamadas a essa função (oito ( 8) para passar a hora inicial e mais oito ( 8) para passar a hora final e retornar o tempo decorrido). É possivel que algum colega tenha uma forma mais rápida e ligeira.
Nesses caso, normalmente eu faço assim:
1º) Na procedure onde está a tarefa demorada, crio uma variável (local)
chamada horaini, do tipo TTime.
2º) Uma linha antes de começar a tarefa demorada, passo a hora do computador para esta variável (dataini := time();
3º) Ao terminar a tarefa, pego a hora final do computador e dela subtraio a hora inicial: (time() - horaini);
Para apresentar na tela eu poderia fazer:
E não precisou usar o componente TTimer (que gasta bastante recursos do sistema), trabalha com menos variáveis globais (só uma) e não cria e nem faz chamadas à função.
Uma função para configurar a impressora, por exemplo, é muito útil, se você tiver vários trabalhos de impressão em momentos diferentes. Mas para calcular o tempo de impressão, eu penso que que o ´meu´ jeito acaba sendo mais prático. Se eu estiver errado, por favor, me ensinem.
carlosrm :)
como ninguém até agora respondeu seu post, vou sugerir o seguinte:
qualquer que seja a função que você crie, será sempre preciso passar/informar dois valores:
1) a hora em que iniciou a tarefa demorada, e
2) a hora em que terminou.
Depois, é subtrair a primeira da segunda e obter o tempo decorrido.
Observe que a tarefa pode começar às 23:50 de um dia e terminar às 00:05 do outro dia.
Você teria que
1º) criar uma função,
2º) chamar esta função no ínicio da tarefa, passando o horário inicial,
3º) chamar de novo esta função no final da tarefa (horário final) e
calcular a diferença para obter o tempo decorrido.
E até agora, não houve necessidade de utilizar o componente TTimer.
Se vc tiver oito ( 8) tarefas demoradas no seu sistema, terá que fazer dezesseis (16) chamadas a essa função (oito ( 8) para passar a hora inicial e mais oito ( 8) para passar a hora final e retornar o tempo decorrido). É possivel que algum colega tenha uma forma mais rápida e ligeira.
Nesses caso, normalmente eu faço assim:
1º) Na procedure onde está a tarefa demorada, crio uma variável (local)
chamada horaini, do tipo TTime.
2º) Uma linha antes de começar a tarefa demorada, passo a hora do computador para esta variável (dataini := time();
3º) Ao terminar a tarefa, pego a hora final do computador e dela subtraio a hora inicial: (time() - horaini);
Para apresentar na tela eu poderia fazer:
Showmessage(´Tempo decorrido desta tarefa: ´+ timetostr(time() - horaini)+´.´);
E não precisou usar o componente TTimer (que gasta bastante recursos do sistema), trabalha com menos variáveis globais (só uma) e não cria e nem faz chamadas à função.
Uma função para configurar a impressora, por exemplo, é muito útil, se você tiver vários trabalhos de impressão em momentos diferentes. Mas para calcular o tempo de impressão, eu penso que que o ´meu´ jeito acaba sendo mais prático. Se eu estiver errado, por favor, me ensinem.
carlosrm :)
GOSTEI 0