![]() |
Iniciar un TThread en un Form crear en runtime
Hola amigos:
Tengo un problema que no consigo resolver, ni encontró información en Internet. Tengo un programa principal, que ha modo de menú general, abre diferentes formularios con el procedimiento:
Esto, me funciona perfectamente hasta que en un formulario abierto en tiempo de ejecución, intento crear un nuevo hilo. El programa es una prueba de programa multi hilo, que me baje de Internet.
Cuando lo ejecuto se ejecuta synchronize y pasa a ejecutar ActualizarTexto me da el siguiente error: 'Access violation at address 00A16CD2 in module 'MenuAplicacion'.Read of address '00000390'. En cambio si lo ejecuto como programa principal, funciona perfectamente y no da ningún error. Agradeceré cualquier ayuda |
No parece que en ese código exista ningún problema, pero habría que ver el código completo de la llamada y del Thread.
La mayoría de los problemas con hilos llegan por intentar acceder a elementos que no están definidos en el thread (sin sincronizar). Con esto que pones es difícil.... |
Lo curioso es que si arranco directamente el programa que ejecuta el TThread, funciona correctamente.
El error lo da si genero el formulario en runTime |
joseprad,
Cita:
1- ¿El formulario Form8 esta instanciado al momento de la falla? 2- ¿Puedes colocar el código es cuestión para analizar el problema? Espero sea útil :) Nelson. |
Hola Nelson.
Te adjunto el código completo del Form8
Este programa que no es mas que un contador, funciona perfectamente. Pero si lo arranco desde otro programa con:
entonces me da el error. Saludos |
Cita:
Hola. Si te fijas en el código en rojo estas utilizando la variable Form8 que hace referencia a la clase TForm8, a la cual no le estas asignando ningún valor por lo que tiene un valor nil o nulo y si intentas hacer referencia a esta (invocar métodos o acceder a sus propiedades) Delphi te devolverá un error "Acces Violation". Una solución para tu caso es asignarle la referencia del formulario creado para que puedas acceder a él.
try..finally |
Muchas gracias amigo.
Como dicen en mi tierra siempre ven mas cuatro ojos que dos. |
La franja horaria es GMT +2. Ahora son las 21:32:27. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi