![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
![]() Hola a tod@s:
Bien la duda que me asalta el día de hoy es la siguiente: cual es la función mas indicada para destruir un objeto para este caso un formulario
o y muy en concreto cual es la diferencia entre las dos funciones Agradezco de antemano gertorresm Colombia |
#3
|
||||
|
||||
Cita:
es equivalente a
La única razón para usar FreeAndNil al momento de liberar un objeto es asegurarte que el objeto apunta a nil y no a una dirección de memoria arbitraria. Esto te puede servir si posteriormente utilizas la variable y quieres saber si sigue "vivo":
Pero, en el caso que propones, siendo una variable temporal que no se usa posteriormente, no tiene nonguna ventaja poner la variable en nil ni, por tanto, usar FreeAndNil. // Saludos |
#4
|
||||
|
||||
Cita:
// Saludos Última edición por roman fecha: 06-04-2011 a las 17:48:47. |
#5
|
||||
|
||||
Para preguntar en cualquier parte de tu programa si uno de tus formularios concretos está o no creado, al menos yo, pregunto por
La única manera de que te devuelva False, es decir, que el Formulario no está creado, es que MiForm sea igual a Nil Si Haces sólo un Free del formulario, no se pone a 'Nil' y por lo tanto la pregunta anterior siempre te dará True incluso aunque hayas 'liberado' tu formulario con Free. Por eso FreeAndNil, o simplemente también sirve :
... sobre gustos ...
__________________
Piensa siempre en positivo ! |
#6
|
||||
|
||||
... se me adelantó el Maestro Roman !!
![]()
__________________
Piensa siempre en positivo ! |
#8
|
||||
|
||||
mmm me puse a cambiar los...
frmBalance := nil por FreeandNil(frmBalance) y me sale el siguiente mensaje de error cuando cierro un formulario Invalid Pointer operation what da faq????
__________________
Dulce Regalo que Satanas manda para mi..... |
#9
|
||||
|
||||
la forma como creo los formularios es asi (dentro de un formulario Main)
cuando coloco freeandnil(frmbalance) en el destroy o en el close....me sale el error mencionado pero si coloco esto en el destroy no me aparece mensaje
me libera ? si? no? antes de llamar al formulario balance coloque esto y siempre es nil me olvidaba coloco action := caFree; en el close esta bien asi?
__________________
Dulce Regalo que Satanas manda para mi..... Última edición por oscarac fecha: 06-04-2011 a las 18:25:06. |
#10
|
||||
|
||||
Habría que ver el contexto. Por ejemplo, si llamas FreeAndNil desde el mismo formulario frmBalance, podría suceder el error que pones. En ese caso tendrías que usar Release en lugar de Free.
// Saludos |
#11
|
||||
|
||||
me atrevo a preguntar
cual es la diferencia entre frmBalance := TfrmBalance.create(nil) ; y frmBalance := TfrmBalance.create(self);
__________________
Dulce Regalo que Satanas manda para mi..... |
#12
|
||||
|
||||
Cita:
entonces lo correcto seria frmBalance.nil; frmBalance.free; ???
__________________
Dulce Regalo que Satanas manda para mi..... |
#13
|
||||
|
||||
No, no puedes hacerlo así, primero hay que liberar la memoria y luego asignarle nil a la misma.
Por eso el orden correcto es x.free; x:=nil; o más cómodo: freeandnil(x); Si lo haces al revés, asignas nil, entonces cuando llamas a free no hace nada porque está a nil. Edito: he contestado lo de antes sin haber visto tu último mensaje ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#14
|
||||
|
||||
Concluyendo....
primero free y despues nil y nunca nu freeandnil dentro del mismo form
__________________
Dulce Regalo que Satanas manda para mi..... |
#15
|
||||
|
||||
Cita:
![]() El boot ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#16
|
||||
|
||||
mmmm
deberias ver a los acrobatas que hay por aca... desafian las reglas de la fisica ![]() ![]() ![]()
__________________
Dulce Regalo que Satanas manda para mi..... |
#17
|
|||
|
|||
Hola...
oscarac, no es recomendable usar la variable que declara Delphi cuando creas un formulario nuevo:
dentro de los métodos o manejadores de eventos del mismo. Estó es, si haces algo como:
Te podría traer problemas posteriores. Si quieres garantizar que un formulario se destruye al cerrarlo una de las formas de lograrlo es el evento OnClose:
Saludos... |
#18
|
||||
|
||||
sigo con el tema...
coloco frmbalance.free frmbalance.nil y me sale stack overflow ![]() ![]() ![]()
__________________
Dulce Regalo que Satanas manda para mi..... |
#19
|
||||
|
||||
Cita:
![]() Saludos... ![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 |
#20
|
|||
|
|||
Hola...
De seguro está poniendo ese código en el evento OnDestroy del formulario en cuestión... Saludos... |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Forms: FreeAndNil ó Release y la validación Assigned? | jbautista | Varios | 13 | 09-02-2010 17:33:03 |
Assigned y Free | gluglu | Varios | 4 | 14-05-2007 21:03:37 |
Problemas FreeAndNil | OscarG | OOP | 4 | 09-11-2005 12:48:46 |
Free Pascal 2.0 | marcoszorrilla | Noticias | 6 | 19-05-2005 12:04:51 |
Componente free... | Mauro® | Varios | 10 | 12-06-2004 13:15:24 |
![]() |
|