PDA

Ver la Versión Completa : Cronometro Timer


cancerbero
23-06-2004, 09:29:57
Saludos amigos..

Necesito realizar un cronometro para controlar el tiempo que tarda en procesar mi programa y quisiera hacerlo con un ttimer y luego mostrarlo en un
progressbar y en un label, agradeceria la ayuda..


atte.
cancerbero :D

Lepe
23-06-2004, 12:05:37
En lugar de un timer, que es impreciso, mejor usa la funcion GettickCount el resultado de esa funcion la guardas en una variable justo al inicio de la tarea que deseas cronometrar y cuando termine, restas ese valor del que obtienes de nuevo con GetTickcount. Eso te da los milisegundos que han pasado.

Igualmente lo puedes hacer guardando la fecha y hora con la funcion Now(), y despues restarla al terminar la tarea.

Como en principio no sabes cuanto va a tardar en realizar la tarea, lo del progressbar yo no lo haría.

Saludos

igest2000
24-06-2004, 15:50:24
Como dice lepe tienes varias alternativas al TTimer y sobre todo debes tener mucho cuidado con lo de ir mostrando el avance en una barra de progreso. A menos que sepas el tiempo que se tarda en realizar la tarea, es dificil determinar el avance de la misma, eso si en caso de saberlo te interesaria un TTimer, ya que con este puedes ir controlando en todo momento el progreso, mientras que si usas las funciones que te comentaba lepe, solo peudes calcular el tiempo desde el principio hasta el final.

Si persistes en usar el TTimer, en el evento onTimer deberias hacer que la barra de progreso fuese avanzando teniendo en cuenta la cantidad de trabajo que tienes realizada. Así por ejemplo si tienes cuatro tareas, puedes hacer que cuando vayas acabando cada una de ellas la barra de progreso avance un 20%.

ejemplo de codigo:


procedure TTImer1.onTimer(..)
begin
case tarea of
1: begin
progresBar1.progres:=20;
end;
2: begin
progresBar1.progres:=40;
end;
3: begin
progresBar1.progres:=60;
end;
4: begin
progresBar1.progres:=80;
end;
end;

En este ejemplo se usa la variable global tarea, que a medida que se vayan ejecutando los procesos, iras ampliandola, de forma que cuando el TTimer compruebe su valor, puedas determinar en que estado de progreso estas.

Espero te sirva de ayuda.