FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Acces Violation al crear un Form
Buenas para todos...
Hace poco empece a migrar las aplicaciones que tengo en Delphi 5 hacia Delphi XE, y en una de las mismas me sale un "acces violation at address..." al crear un form. El codigo es el que sigue:
Lo que pasa es que en el primer click en BtnUsuarios el FrmABMUsuarios se muestra perfectamente. Si quiero pulsar nuevamente el BtnUsuarios o el BtnPerfilUsuario me tira "access violation". Probe cambiando el create(self), create(nil) y create(application)... Probe reiniciando la maquina por si la memoria habia quedado mal... Sinceramente no se que es lo que pasa, ni porque tira ese error, si debbugueando veo que pasa por el FrmABMUsuarios.Free. Por ultimo, cuando cierro el form (click derecho - close page), me tira un "invalid pointer operation". Bueno, espero haber sido claro... desde ya muchas gracias... abrazo!!! Última edición por jpgonzalez fecha: 23-05-2012 a las 19:14:45. |
#2
|
||||
|
||||
has probado quitando el free?
y colocandolo despues de donde invocas a los formularios
__________________
Dulce Regalo que Satanas manda para mi..... |
#3
|
||||
|
||||
Me parece que despues de hacer free al formulario debes asignar nil a la variable.
Espero te sirva Saludos |
#4
|
||||
|
||||
Hola jpgonzalez.
¿ Podrías poner el código de los eventos OnClose de los tres forms ? Es decir de: FrmMain, FrmABMUsuarios y FrmABMPerfilDeUsuario y si en alguno utilizas el evento OnDestroy también. Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#5
|
|||
|
|||
Cita:
De todas maneras, me parece que el free no esta liberando el Form... mas abajo pongo el codigo. Abrazo y muchas gracias!!! Cita:
Abrazo y muchasw gracias!!! Cita:
Habra diferencias en el manejo de los Forms o de memoria entre D5 y DXE???... ah, cabe aclarar que el D5 lo usaba desde el entorno de Borland y el DXE desde Embarcadero, capaz que eso tambien tenga que ver. Abrazo y muchas gracias!!! Bueno, las soluciones propuestas me llevaron a probar con el siguiente codigo:
y me di cuenta de algunas cosas: 1- En el segundo click al Btn que abre FrmABMUsuarios, no entra al "if (FrmABMUsuarios = nil)" 2- Nunca entra en el "if(FrmABMUsuarios = nil)" Supongo entonces que el form debe quedar en memoria, o algo por el estilo... De todas maneras sigo sin entender el motivo por el cual me tira el "Acces Violation" cuando quiero abrir otro Form diferente, es decir, si luego de abrir el FrmABMUsuarios y cerrarlo, quiero abrir FrmABMPerfilDeUsuario. Nuevamente muchas gracias a todos, sigo probando a ver que pasa... Abrazo!!!! |
#6
|
|||
|
|||
Buenas para todos nuevamente...
Luego de probar y probar varias soluciones sin éxito, y pensando que el error estaba en la llamada al Form, descubri accidentalmente el problema real. En realidad lo que estaba provocando el error es un componente que tenia en los Forms, el TDaoGrid. Este es un componente de D5, que lo pude hacer compilar e instalarlo en DXE. Por ese motivo, habia forms que abrian y cerraban correctamente y otros no... porque los que abrian y cerraban correctamente no tenian DaoGrid. Este componente me es muy átil porque permite insertar imagenes dentro de la grilla, por la propiedad AllowIncSeach, que permite hacer búsquedas escribiendo en la grilla. Como no encontré un componente similar para DXE, le "adapte" el de D5, y evidentemente esto no quedo bien, aunque figura instalado correctamente. Nuevamente muchas gracias a todos, y comparto la solución para que lo tengan en cuenta... si hay un form que no quiere andar, revisar los componentes que usa!!!! Abrazo!!!!! |
#7
|
||||
|
||||
Hola jpgonzalez.
En el código de tu primer mensaje: No parece haber nada que esté provocando ese error, es por eso que te pregunté por los eventos OnClose y OnDestroy, pero al mencionar que no los usas, quizá debas revisar en los eventos OnCreate y Onshow de dicho form. Cita:
se libera la memoria pero no se ajusta el valor de la variable a nil, para eso hay que hacer: O de otro modo:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#8
|
|||
|
|||
Groso ecfisa...
Muy clara tu explicación... A pesar de que el error no tenia nada que ver con la liberación del Form, voy a usar esta explicación para la futura codificación. Abrazo y muchas gracias!!!! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Acces Violation at address... | franciscoca | Varios | 3 | 26-12-2010 02:59:28 |
acces violation en preview | hecospina | Impresión | 2 | 03-12-2008 21:18:21 |
acces violation at adress en quickreports | eduardo360 | Impresión | 1 | 13-02-2008 02:54:49 |
acces violation con TSimpleDataSet D7 | fredo | Varios | 0 | 03-05-2006 21:21:08 |
Acces Violation | eduarcol | Impresión | 10 | 23-01-2004 20:03:18 |
|