Ver Mensaje Individual
  #20  
Antiguo 11-07-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 23
guillotmarc Va por buen camino
Hola.

Cita:
Posteado originalmente por andres1569
Las funciones callback que pasamos al Hook no son funciones de objetos, sino funciones "sueltas", por lo que no sé cómo en el cuerpo de estas funciones podríamos acceder a los TTimers (podríamos acceder a ellos mediante la expresión Form1.Timer.Enabled := FALSE, es decir referenciando la variable Form1, pero esto puede ser algo peligroso). Aunque a decir verdad las funciones Hooks siempre irán en el Form principal o en el DataModule principal, que normalmente estará activo durante toda la vida del programa, pero se debe tener en cuenta esa cuestión.
No creo realmente que hubiese problemas, es lo mismo que acceder a la variable UltimoAcceso que estará definido en el formulario principal, también tenemos que poner el Timer en ese formulario. Así aseguramos que el tiempo de vida del Timer sea el mismo que las llamadas a los Hooks. Si hubiera la posiblidad de que se ejecutarán en threads distintos si que habría que sincronizar (hay una función para eso) el acceso al Timer para asegurar que no se provoque un conflicto, pero no es el caso.

Cita:
Posteado originalmente por andres1569
De todas formas, el llamar a GetTickCount creo que es más eficiente que poner Timer1.Enabled := FALSE y luego TRUE
Completamente de acuerdo, aunque lo que tienes que comparar són la ejecución de tu función garfio, con el reseteo que propongo yo. Para el tema del rendimiento nos podemos olvidar de los disparos de los timers, en mi solución, simplemente porqué nunca se dispara, y en la tuya, porqué como dices, se puede definir para intervalos suficientemente largos como para despreciarlo.

Esta claro que poner en la función garfio un acceso a GetTickCount es más eficiente que resetear el Timer. No he propuesto esa solución por rendimiento, sinó como comentas, por la elegancia de solucionar el problema unicamente con dos componentes y dos lineas de código. (El rendimiento no siempre lo es todo).

Un saludo.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 11-07-2003 a las 00:40:10.
Responder Con Cita