FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Hola, primero te recomiendo que utilices otro método para medir el tiempo, ya que el TTimer es muy impreciso y con tiempos tan largos peor todavia..
En Torry podés encontrar varios Timer más precisos. Otra opción es utilizar la API GetTickCount, documentada acá. Esta función te devuelve la cantidad de tiempo (en milisegundos) que hace que la computadora esta encendida. Cuando iniciás el proceso guardas el valor que te devuelve GetTickCount y con un TTimer común (con un intervalo menor a 1 segundo) vas comparando el valor que te da GetTickCount con el de la variable y luego haces los cálculos y actualizás los labels. Cita:
EDITO: En lugar de usar un Thread, proba añadiendo Application.ProcessMessages en el proceso. Bytes!! Última edición por Sotrono fecha: 29-06-2006 a las 19:03:08. |
#2
|
|||
|
|||
Hola y gracias por tu respuesta.
Perdona, pero tengo poca experiencia con Delphi. ¿Podrías ponerme aunque sea a modo de esquema cómo puedo usar la función GetTickCount como comentas? Voy a documentarme sobre el TThread, ¿tendría que meter en una hebra ambos procesos? un saludo. |
#3
|
||||
|
||||
Declará a Inicio y T_Actual como Extended;
El codigo que iría antes de iniciar el proceso seria éste:
Y éste es el evento OnTimer del Timer:
Cita:
Y si lo haces con Threads, tenés que poner en uno solo el proceso que vos manejas, ya que el TTimer crea un Thread propio. |
#4
|
||||
|
||||
Con GetTickCount no necesitas un Timer. Aquí tienes un ejemplo sacado de Ians Marteens "midiendo el tiempo con precisión", adaptado por mí:
Ejemplo de uso:
Como el cronómetro usado es del ordenador, no importa si nuestra aplicación se queda congelada. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
|||
|
|||
Muchas gracias. Voy a intentar lo que me has explicado.
Ya te comento si tengo algún problema. Un saludo. |
#6
|
||||
|
||||
Muchas gracias Lepe, justo estaba buscando algo simple pero preciso para medir el tiempo, me vino muy bien tu clase, se agradece...
|
#7
|
||||
|
||||
Yo solo utilizaria la funcion TimeGetTime (ideal para lo que necesitas)de la unidad MMSystem ,mas o menos de esta manera:
Edito:Esto es sin Timer y sin ninguna Clase extra. y es mas precisa que GetTickCount.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Última edición por rgstuamigo fecha: 03-04-2009 a las 23:14:13. |
#8
|
|||
|
|||
Hola, te recomiendo que en varias partes de tu codigo, por ejemplo dentro de un bucle, uses la instruccion "Applicattion.proccessmessage;"
Esta instruccion hace que windows procese los mensajes pendientes y da el efecto que la aplicacion no se congela. Asi se pueden ejecutar las instrucciones del timer. Yo lo uso asi y me funciona. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
problemas en tiempo de ejecución | Nelly | Varios | 4 | 05-04-2006 19:25:53 |
Problemas al tratar de crear varios componentes en tiempo de ejecucion | ilichhernandez | Conexión con bases de datos | 2 | 13-11-2005 19:03:26 |
Cómo medir en unidades de tiempo? | Gabriel2 | Varios | 2 | 31-10-2005 15:51:24 |
Problema con un Timer en tiempo de Ejecucion | santiellupin | OOP | 4 | 15-05-2004 16:21:37 |
abrir BD mdb usando ADOconnections en tiempo de ejecución | viajero2015 | Conexión con bases de datos | 3 | 25-09-2003 01:39:05 |
|