![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
¿En qué línea se te produce este AccessViolation?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#2
|
||||
|
||||
|
Como muy bien dices, no es necesario cerrar el Datamodulo, aunque como te dice Federico, tienes que dar algún dato más, estos errores suelen producirse por tratar de acceder a componentes o que aún no han sido creados o que ya han sido destruidos......
También convendría que pusieras el mensaje de error que te da completo. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
|
#3
|
|||
|
|||
|
El error me sale justo cuando pasa por el End de la aplicación:
begin Application.Initialize; Application.Title := 'Gestión'; Application.CreateForm(Tfrdadesglobals, frdadesglobals); Application.CreateForm(Tfrlogin, frlogin); Application.Run; end. --> en esta linea y el mensaje de error es el siguiente: Application Error Exception EAccessViolation in module Gestion.exe at 000B661A. Access violation at address 004B661A in module 'Gestion.exe'. Read of address 0181EDEC. |
|
#4
|
||||
|
||||
|
Te recomiendo revisar los eventos "de salida" de tus forms y demás componentes. OnExit, OnClose, OnDestroy, etc. En alguno estas haciendo referencia a un objeto que seguramente ya ha sido destruido durante el proceso de salida de la aplicación.
De ahi el access violation. Ahora que me fijo un poco mas... si el formulario principal es el frLogin, y al cerrarlo lo destruis, la aplicación no correrá, pues al cerrarse este, provoca el cierre de la aplicación completa. Aunque esto dicho, claro, no coincide con el código que publicas, donde el formulario frdadesglobals seria el principal de la aplicación. Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#5
|
||||
|
||||
|
Si no me equivoco en el End se ejecutan todos los Finalizations de las units... ¿Tenes posibilidad de debuguerlo?... ¿Utilizas algun objeto que se crea automáticamente (Por ejemplo Clipboard, Printer...)?
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#6
|
|||
|
|||
|
El formulario principal no es el 'frdadesglobals', este es un datamodule y lo necesito al abrir el login, por eso lo creo antes.
He probado de quitar el action:=cafree del frlogin pero el error me sale igual. En cuanto a los 'onclose' no los he repasado todos por que tengo unos 350 formularios. Lo que he hecho es poner puntos de interrupcion en los cierres de los cinco o seis formularios que se crean des del login, pero no me ha servido de nada por que cuando abro el login y lo vuelvo a cerrar sin acceder a ningun otro formulario no pasa por ningun otro formclose y el error me lo da igualmente. Del tema de objetos automáticos no tengo ninguno. Una cosa curiosa que si he observado es que cuando reconstruyo el proyecto (con el build) el ejecutable que me crea no da el error al salir, en canvio si seguidamente al build intento ejecutar el proyecto des del codigo fuente si me vuelve a salir el error. ¿?¿?¿?¿? Y haciendo pruebas veo que añadiento el siguiente codigo despues del application.run me da el error en el destroy del dadesglobals, pero el del login parece que lo hace bien: frlogin.destroy; frdadesglobals.destroy; Pero añadiendolo al revés también me da el error en destroy del dadesglobals: frdadesglobals.destroy; frlogin.destroy; Ester |
|
#7
|
||||
|
||||
|
Si los formularios ya contienen:
Action:=CaFree; Al cerrarse estos se destruyen por lo tanto si luego llamas desde otro formulario al método Destroy de alguno de los que acabas de cerrar te darán error porque esos formularios ya no existen......? Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|