[Lazarus-es] EXC_BAD_ACCESS al hacer un close de un form

Giuseppe Luigi Punzi glpunzi en lordzealon.com
Jue Jun 25 14:19:49 CEST 2009


El jue, 25-06-2009 a las 14:21 +0200, JoshyFun escribió:

> Hello Giuseppe,
> 
> Thursday, June 25, 2009, 8:20:56 AM, you wrote:
> 
> GLPR> Hola joshy.
> GLPR> No, después del applyupdate hago:
> GLPR> Frmclientes.close
> GLPR> Esa línea es la que lleva al customform.inc
> 
> Los EXC_BAD_ACCESS son difíciles de corregir, suelen venir provocados
> por una corrupción de la memoria, pero puede venir de muy atrás en el
> código. Lo más probable es que hayas (digo tu por que es más probable
> que tu codigo esté mal que el de Lazarus) liberado algún recurso con
> un free por algún sitio pero lo hayas "reusado" sin querer. Para ello
> cambia todos los free de tu código por "FreeAndNIL" si no lo has hecho
> ya. Otra posibilidad es que algo en los objetos que usas con la base
> de datos hagan algo mal debido a un bug en el código, así que la única
> solución que veo a tu problema es que reduzcas tu código a la mínima
> expresión para que lanze el error.
> 
> Por la linea del error en customform.inc, evento close, el problema es
> que el form que estás manejando tiene la memoria corrompida, esto es
> apunta a una dirección que ha sido ya liberada por el motivo que sea.
> Un problema típico de esto, pero que no sería aplicable en este caso
> es hacer algo así en una función:
> 
> var
>   f: Miform;
> begin
>   f:=MiForm.Create;
>   f.show;
>   f.free;
> end;
> 
> Ya que el show se ejecuta y antes de que se cierre el form ya se
> libera, lo que pueda dar problemas de este tipo.
> 
> Usa el debugger y comprueba que el form "Self" siempre apunta a la
> misma dirección, para ello antes del f.showmodal apunta en un papel el
> valor de "f", y en el evento que haces el close, pon una linea de
> código que compruebe el valor de self. Ambos tienen que coincidir.
> 


Luego le echo una ojeada a lo que me comentas, gracias ;)

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20090625/d6dc5e8f/attachment-0002.html>


More information about the Lazarus-es mailing list