PDA

Ver la Versión Completa : Problema al cerrar una ventana noModal.


Perenquen
04-11-2004, 14:19:17
Buenas a todos.

Mi problema surge al cerrar una ventana no modal creada dinamicamente. LLamo al formulario a partir de este código.


if Assigned(FEspera) then
begin
FEspera.Label1.Caption:='Espera, Cambiando tarifas';
FEspera.Show;
Fespera.Repaint;
end
else
begin
with TFespera.Create(Application) do
name:='FEspera';
label1.Caption:='Espera, Cambiando tarifas';
Repaint;
end;


Donde FEspera es un formulario creado en tiempo de diseño y eliminado del los autocreate-Forms de Delphi.

Hasta aqui todo bien, pero para cerrar ese formulario utilizo:


FEspera.close


y ahí está el problema, ya que me da un error de Access Violation address.

Si alguien me echara una mano se lo agradecería.

delphi.com.ar
04-11-2004, 14:24:19
¿Qué haces en el OnClose del Form?...

recuerda que si preguntas por Assigned(Objeto) y este objeto fue liberado pero su "puntero/variable" no ha sido "limpiada" (Variable = Nil) asigned retornará True y tu código producirá un "Access Violation"

Saludos!

Perenquen
04-11-2004, 14:35:43
Ante todo OLE por la rapidez de tu respuesta.


¿Qué haces en el OnClose del Form?...

recuerda que si preguntas por Assigned(Objeto) y este objeto fue liberado pero su "puntero/variable" no ha sido "limpiada" (Variable = Nil) asigned retornará True y tu código producirá un "Access Violation"


Dentro del onClose del Form tengo


Action := cafree;


pero es que ni llega a pasar por esta línea, el error lo da justo en


FEspera.Close;


Como no entendí muy bien lo del Assign ( Es que soy nuevo en esto). Eliminé esa parte del codigo, ya que estoy seguro de que esa ventana no ha sido creada con anterioridad.


with TFespera.Create(Application) do
begin
name:='FEspera';
label1.Caption:='Espera, Cambiando tarifas';
Repaint;
end;


y aun asi, me da el problema.