PDA

Ver la Versión Completa : Access violation


Giasl
05-05-2003, 18:46:33
Buenas, tengo un evento onTimer que se ejecuta cada 1000 ciclos, es decir cada segundo para visualizar la hora.

El problemas es que obtengo errores de access violation tras varias horas de ejecución.
Basicamente lo que hago es coger la hora del sistema y restar a la hora de inicio del proceso así pues calculo el tiempo en ejecucion del programa.

¿ Le ha pasado a alguien lo mismo ?

Utilizo Delphi 6.


GRACIAS A TODOS
Salud2

marcoszorrilla
05-05-2003, 18:54:59
Esto te ocurre siempre o cuando coincide que cambia de un día a otro, si fuera así utiliza Now en vez de Time.

Un Saludo.

__cadetill
05-05-2003, 19:04:52
Yo hago lo siguiente para poner la fecha y la hora en la barra de estado de mis aplicaciones y nunca me ha dado problemas


BarraEstado.Panels.Items[3].Text := DateToStr(Date);
BarraEstado.Panels.Items[4].Text := TimeToStr(Time);
Application.ProcessMessages;


Espero te sirva

Giasl
06-05-2003, 09:56:32
Gracias por el interés.

El programa se rompe aleatoriamente, al cabo de 5 horas otro dia esta 12 horas otro dia en 2 horas, etc...

Es una aplicación multihilo que ejecuta unos 10 hilos simultanemanente y decidí que el control del tiempo de proceso
lo hiciera un componente que ya de por si es un Thread como es el Timer del la paleta de componentes de delphi 6.
En el onTimer cada 1 segundo actualizo los datos la dia hora
de inicio, actual y el tiempo en hh:mm:ss de ejecucion del programa. Ademas saco la media de unos calculos que realizan todos los hilos e informo en pantalla (para no aburirse mirando el programa y para saber que estan funcionando bien)
Como es mega complicado depurar los multihilos es el control que realizo. Pero de vez en cuando tengo un access violation.
Evidentemente TODOS los procesos estan protegidos con Try
para que no se pare el programa pero no entiendo como de forma aleatoria tengo esto access violations.


??????


Gracias 1000.

delphi.com.ar
06-05-2003, 21:57:38
Si lo haces un debug con la opción del Debugger "Stop on Delphi Exceptions"... ¿no para en la línea del error?

Mick
06-05-2003, 23:28:33
Con solo la informacion que das no es posible descubrir el error.
El quiz de la cuestion es que no solo estas actualizando la hora (eso no falla por muchas horas que se este ejecutando el programa), sino que seguramente estas accediendo a objetos o variables de los otros threads.
Los accesos a datos y objetos entre threads hay que protegerlos ( con semaforos o usando la funcion synchronize), el no hacerlo suele provocar precisamente errores aleatorios de ese tipo.

Salud2 !!!

Giasl
07-05-2003, 12:35:51
Creo que el tema va por aqui....
Miraré de realizar un thread para el ejecucion horaria y protegerlos con syncronize.


Por cierto el tema de los semaforos no lo domino. ¿ Alguien tiene información al respecto ?

Creo que hasta la rutina de errores la lanzaré tambien un thread para que no de problemas. Pues de vez en cuando tambien tiengo un error en la rutina de errores que capturo pero que tambien me desborda el programa. Lo que sucede es que deberia realizarlo con semaforos, pues si se producen (cosa normal) dos errores al mismo tiempo...



GRACIAS MIL