FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ayuda con timer
bueno son dos preguntas,
1ro es verdad que esta en milisegundos?? si es asi, porque cuando agrego un timer con el interval=1, y adentro pongo una variable a incrementarse, en un segundo no llega ni remotamente a los 1000 valores, hice la prueba con un minuto y en vez de contar 3600 conto 3830 aproximadamente, estoy usando delphi 2010, ahh cuando pongo el interval en 1000 si cuenta en tiempo vien segundo a segundo, sera el timer, el delphi o yo??? 2da hay alguna forma o algun otro componente con el que pueda ejecutar cosas cada 0.2ms, porque el timer no me deja bajar de 1 ms y me hacen falta tiempos menores |
#2
|
||||
|
||||
Bueno, sí, el tiempo se da en milisegundos, pero en un sistema operativo multitarea o multihilo no existe ninguna garantía de que la interrupción se realice exactamente en ese intervalo. El sistema hará lo posible para que sea así, pero no puede garantizarse. Los únicos sistemas capaces de ello son los sistemas de "tiempo real" o los de "tiempo crítico", y Windows no entra en ninguna de estas categorías.
Respecto a si es posible conseguir interrupciones más pequeñas, sí que es posible, pero teniendo en cuenta la misma limitación. Es más, cuanto menor sea el intervalo de interrupción mayor desviación se producirá. Es decir, que hay menos probabilidades de que se produzca la interrupción exactamente en 0'2ms que en 2ms. Haz una prueba; antes de ejecutar el programa pon en marcha otros programas que gasten microprocesador: por ejemplo pon música, carga un vídeo de YouTube, etc. Comprobarás que los tiempos tienden a ser más erráticos. En definitiva, no es Delphi ni mucho menos tú: es el sistema operativo y el microprocesador. Última edición por Ñuño Martínez fecha: 15-03-2011 a las 12:54:07. |
#3
|
||||
|
||||
Y para qué quieres tiempos tan reducidos?
Busca información sobre GetTickCount, que creo que te ofrecerá otra opción para manejar tiempos. Puedes ver tambié QueryPerformanceTimer Supongo que podrías hacer un : Código:
TicksPorMilisegundos := CantidadDeTicksPorSegundo / 1000; CeroPuntoDosMilisegundos := 0.2 * TicksPorMilisegundos; Start := TickInicio; while ((CantidadDeTicks - Start) < CeroPuntoDosMilisegundos) do begin //No hacer nada end; Última edición por duilioisola fecha: 15-03-2011 a las 14:05:06. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Timer | comba | OOP | 3 | 18-06-2007 16:54:00 |
Timer | ojimenezg2000 | Gráficos | 10 | 27-04-2006 14:56:02 |
Timer | Malon | OOP | 5 | 25-11-2003 17:19:03 |
Ayuda con Slpash y Timer!! | mosorio | OOP | 0 | 28-07-2003 12:00:20 |
Timer | kao | Varios | 6 | 30-06-2003 19:02:53 |
|