FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
EAccessViolation
Hola a todo el mundo,
llevo ya algunos dias peleandome con una aplicación que me da el error de EAccesViolation al salir. Estuve mirando distintos foros y siguiendo los consejos que leí pero no consigo solucionar el problema. Parece ser que el error me lo da en el End final, pero no se que está intentando hacer. Os explico un poco como tengo montada la aplicación, a ver si alguien puede decirme que hago mal: - La aplicación tiene como formulario principal un login y a partir de este carga un formulario de menus con el menu personalizado para cada usuario. - También contiene un datamodule que cargo al iniciar la aplicación. - No cierro manualmente el datamodule, deduzco que lo hará él al finalizar la aplicación. - En el evento onclose de todos los formularios, incluido el frlogin incluyo la instruccion "action:=cafree". El código para iniciar el programa es el siguiente: Begin Application.Initialize; Application.Title := 'Top Cable'; Application.CreateForm(Tfrdadesglobals, frdadesglobals); Application.CreateForm(Tfrlogin, frlogin); Application.Run; End; A ver si alguien me puede decir algo, por que este error me está poniendo nerviosa Ester |
#2
|
||||
|
||||
¿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. |
#3
|
||||
|
||||
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:
|
#4
|
|||
|
|||
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. |
#5
|
||||
|
||||
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 |
#6
|
||||
|
||||
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. |
|
|
|