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

JoshyFun joshyfun en gmail.com
Jue Jun 25 17:52:00 CEST 2009


Hello Giuseppe,

Thursday, June 25, 2009, 5:15:26 PM, you wrote:

>> Pues yo diría que si :)
GLP> Pues yo no veo el error :P

Jajajaja, ahora sacamos los guantes y nos peleamos :)

GLP> form está declarado como variable del tipo TFrmClientes.

El tipo coincide, pero no la instancia a menos que por algún sitio
hagas:

frmClientes:=Self o algo así.

A ver si consigo explicarlo. Supongamos que al hacer un create en vez
de devolvernos un puntero a una nueva instancia, nos devolviera
siempre un número consecutivo 1,2,3,4....

La variable global "frmClientes" inicialmente es igual a nil (cero).
Ahora en tu código haces:

var
  form: TfrmClientes;
begin
  form:=TfrmClientes.Create();

Entonces form es igual a "1", ejecutas el showmodal, y dentro del
onclose llamas a "frmClientes" que recordemos es igual a cero, no
igual a "1" que es el que ha originado la llamada. Para eso existe
"Self" para que no tengas que apuntar quién originó la llamada, ese
siempre es "Self".

>> Cambia el frmClientes.Close por Self.Close ;)
GLP> Ok, lo probaré, pero igualmente, debería funcionar como lo he puesto :P

No por lo explicado arriba, a menos que haya algo de por medio que
invalide mi exposición.

-- 
Best regards,
 JoshyFun





More information about the Lazarus-es mailing list