[Lazarus-es] error al liberar formulario
Paola Bruccoleri
pbruccoleri en adinet.com.uy
Sab Nov 6 00:10:35 CET 2010
El 05/11/2010 08:13 p.m., José Mejuto escribió:
> Hello Paola,
>
> Friday, November 5, 2010, 10:24:42 PM, you wrote:
>
> PB> en el onclose del form:
> PB> dbEquipos.Close;
> PB> FreeAndNil(DMPrincipal); // es un datamodule
> PB> CloseAction:=caFree ;
> ^^^^^^^^^^^^^^^^^^^^^
>
> El formulatio ya se libera al cerrarse (automáticamente debido al
> caFree), no puedes hacerle luego un freeAndNil a esa variable, por que
> la dirección a la que apunta ya ha sido liberada.
si, pero hay algo raro y que no entiendo....
acabo de descubrir que el lío está en el FreeAndNil(DMPrincipal); (es un
datamodule)
lo comenté y ahora me funciona todo correctamente (por lo menos en las
pruebas iniciales que hice); incluso, no se me cuelga la aplicación
luego de cerrar el reporte.
Todas estas pruebas eran en base a mi primer problema, el del reporte...
Les explico:
el DMPrincipal se crea al abrir ese form, y supuestamente se destruye en
el onclose...
procedure TABMEquipos.FormCreate(Sender: TObject);
begin
Application.CreateForm(TDMPrincipal,DMPrincipal);
dbEquipos.Open;
end;
procedure TABMEquipos.FormClose(Sender: TObject; var CloseAction:
TCloseAction);
begin
dbEquipos.Close;
//DMPrincipal.Free;
CloseAction:=caFree ;
end;
ahora.... el datamodule tiene estos eventos:
procedure TDMPrincipal.DataModuleCreate(Sender: TObject);
var
cPathWithFileDB : String ;
begin
cPathWithFileDB := Principal.cPathDB + Principal.cFileDB;
try
ServiamConnectionDB.Database := '';
ServiamConnectionDB.Database := cPathWithFileDB; // alias:
serviam por si lo uso
ServiamConnectionDB.Connected := True ;
except
MessageDlg('¡¡¡ Atención...!!!','¡¡¡ No se pudo conectar a la base
de datos...!!! -> ' + #13 +
cPathWithFileDB,mtWarning,[mbOK],'0');
end;
End;
procedure TDMPrincipal.DataModuleDestroy(Sender: TObject);
begin
ServiamConnectionDB.Connected :=False ;
end;
qué tiene que ver que comentando el FreeAndNil(DMPrincipal) ya no me
cause problemas??
chauuuuuuuu
More information about the Lazarus-es
mailing list