Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problema al cerrar una ventana noModal. (https://www.clubdelphi.com/foros/showthread.php?t=15770)

Perenquen 04-11-2004 14:19:17

Problema al cerrar una ventana noModal.
 
Buenas a todos.

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

Código Delphi [-]
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:

Código Delphi [-]
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.

Cita:

¿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

Código Delphi [-]
Action := cafree;

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

Código Delphi [-]
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.

Código Delphi [-]
with TFespera.Create(Application) do
  begin
        name:='FEspera';
        label1.Caption:='Espera, Cambiando tarifas';
        Repaint;
  end;

y aun asi, me da el problema.


La franja horaria es GMT +2. Ahora son las 10:24:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi