Ver Mensaje Individual
  #1  
Antiguo 03-07-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
Esto me dá que pensar... y mucho:
Código Delphi [-]
Form1:=TForm1.Create(Form1);
Si Form1 no está creado, es equivalente a poner:
Código Delphi [-]
Form1:=TForm1.Create(nil);
Así que tú, en algún momento tendrás que liberar a Form1 haciendo un .Free.

Si picas por segunda vez en el botón, la cosa se complica más:
- Si no has usado FreeAndNil(Form1), es muy probable que Form1 tenga el valor de la antigua ejecución, por lo que jamás se destruirá de memoria (se quedará en el limbo, como se suele decir).
- Si has usado FreeAndNil (o Form1.Free; Form1 := nil), entonces estamos en el primer caso que he comentado arriba.

El hecho de que el programa se interrumpa al situar un BreakPoint, supongo que viene porque el depurador intenta analizar el valor de todas las variables y al tener valores inconsistentes o referencias circulares, se vuelve un poco loco.

El problema viene por la creación y destrucción del "Form1" en tu código, sería bueno que dijeras si liberas Form1, cuando, donde y como.

Si dices como debe funcionar el programa (para qué sirve lo que estas haciendo) y demás... muchísimo mejor.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita