![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
xEsk Gracias por la sugerencia, te cuento q en algun lugar lei q primero habia q hacer q el puntero apunte a nil y luego liberarlo, y eso fue lo q hice pero probare la alternativa q me das.
Lo q me gustaria es q me pudieran explicar un poco como funcionan esto de los punteros porq no funciona el destroy, q es lo q hace el free y cual la diferencia entre ambos. Gracias, Saludos |
|
#2
|
||||
|
||||
|
.Free -> Primero se asegura que el objeto es distinto de nil (puntero nulo), si es distinto, llama a Destroy
.Destroy -> elimina de memoria el objeto, si es un puntero nulo, dará un access violation. "FLabelList" es de por sí, un puntero. Si le asignas nil y después llamas a Flabellist.Free no hará nada, pero la memoria que tenía asignada ¡¡se queda ahí reservada!! es lo que se llama, dejar el objeto en el limbo, (la memoria queda asignada pero no puedes acceder a esos elementos para nada). Si después de todo esto, llamas a FlabelList.destroy, estás ordenando liberar la memoria de un puntero nulo, por eso casca. Tu amigo te diría al contrario, es decir: FlabelList.Free; FlabelList := nil; Si te lo dijo al revés, se le trastornó la neurona .Por supuesto, lo más cómodo, como comodon que es nuestro amigo xEsk: FreeAndnil(FlabelList); es lo que uso siempre saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#3
|
|||
|
|||
|
Gracias Lepe por la aclaración.
te cuento q al principio cuando unicamente hice: FLabelList.Destroy en lugar de hacer el free y mandarlo a nil, igual me genero error de access violation, es por esa razon q no pude usar el Destroy, y no entiendo porq, ya q el puntero no era nulo. Inicialmente solo era esto, pero sacaba error, la pregunta es porq saca error??, si supuestamente lo unico q hago es destruir el puntero. procedure Twindow_ver_refrigerio.FormClose(Sender: TObject; var Action: TCloseAction);begin FLabelList.Destroy; FLabelList2.Destroy; FEditList.Destroy; FEditList2.Destroy;end;saludos |
|
#4
|
||||
|
||||
|
La ayuda lo dice bien claro:
Cita:
Cuando ordenas cerrar la ventana con .Close, se ejecuta el evento Twindow_refrigerio.FormClose que libera las listas, después se sigue ejecutando el Button2Click que también libera las listas de nuevo, es por ahí que da el error. Supongo que antes tendrías otros errores de diseño, de ahí que te aparecieran errores. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#5
|
|||
|
|||
|
Mi estimado Lepe, gracias por toda la información brindada.
Bueno sobre el error q mencionas, si me percate de ello y lo corregi tiempito atras, y simplemente me quedaban las dudas conceptuales q me las aclarastes. Muy Agradecido a todos del foro me despido. Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| ordenar un TList | elcigarra | OOP | 27 | 24-01-2009 00:22:34 |
| TList Delphi | rose | Varios | 4 | 08-05-2006 16:58:30 |
| Uso del Objeto TList | aromero | OOP | 10 | 21-10-2005 17:30:11 |
| Problemas con TList | arantzal | .NET | 2 | 09-12-2004 09:14:37 |
| TList | HERNAN | Varios | 2 | 10-10-2003 03:47:59 |
|