![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
nlsgarcia, entonces porque si al aplicar freandnil en mi código no establece el valor del objeto nil...
Saludos |
|
#2
|
||||
|
||||
|
doctorhd,
Cita:
![]() Te sugiero hacer un debug al código en cuestión para verificar, cuando se aplica el FreeAndNil y cuando se verifica con Assigned la existencia del objecto. Solo a modo de pruebas puedes aplicar un FreeAndNil al objeto en cuestión justo antes de comprobar el mismo con Assigned y veras lo comentado en los Msg #2 y #4 Espero sea útil ![]() Nelson. |
|
#3
|
||||
|
||||
|
doctorhd,
Cita:
![]() El problema radica en que estas pasando los objetos por valor y no por referencia al método TfunGlobal.CloseObjet. Revisa este código En el código anterior en Delphi 7 sobre Windows 7 Professional x32, el método TForm1.Button1Click instancia y libera objetos de la clase TNelson directamente, pero en el método TForm1.Button2Click la liberación de los objetos de la clase TNelson se hace por medio del procedimiento CloseNelson al cual se le pasa por referencia un arreglo de objetos TNelson, si el paso fuera por valor solo se aplicaria nil a los objetos actuales del arreglo Nelson del procedimiento CloseNelson, no a los objetos originales del arreglo Nelson del método TForm1.Button2Click, sin embargo los objetos serían liberados dado que el paso por valor contiene la referencia a los mismos. La solución es : Espero sea útil ![]() Nelson. Última edición por nlsgarcia fecha: 27-04-2015 a las 08:04:30. |
|
#4
|
|||
|
|||
|
nlsgarcia, Creo que ya encontré el error, este esta en la función que utilizo para cerrar los objetos:
Al parecer ciertos objetos se pasan por valor y no por referencia, ya que dentro del procedure freeandnil hace su trabajo y libera la memoria y los deja en nil, pero al salir del procedure dichos cambios no tienen efecto. Es muy raro ya que hasta donde se los objetos o clases siempre se pasan por referencia. Quizás exista algún error en la declaración del array que contiene los objetos... saludos... |
|
#5
|
||||
|
||||
|
doctorhd,
Cita:
![]() Te sugiero revisar y probar todo lo comentado en el Msg #7. Espero sea útil ![]() Nelson. |
|
#6
|
|||
|
|||
|
nlsgarcia, no había visto tu mensaje anterior...Al parecer llegamos a la misma conclusión, pero ahora mi duda es, ¿no se supone que los objetos siempre se pasan por referencia, sin necesidad de utilizar var...?
Saludos y gracias por tu ayuda.. |
|
#7
|
||||
|
||||
|
doctorhd,
Cita:
![]() Cita:
![]() Nelson. |
|
#8
|
|||
|
|||
|
nlsgarcia, citando el mismo texto que me indicas...
Cita:
Cita:
Cita:
Saludos |
|
#9
|
||||
|
||||
|
doctorhd,
Cita:
![]() Cita:
Espero sea útil ![]() Nelson. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| FreeAndNil VS Free | GerTorresM | OOP | 45 | 30-01-2012 01:54:24 |
| Forms: FreeAndNil ó Release y la validación Assigned? | jbautista | Varios | 13 | 09-02-2010 17:33:03 |
| Microsoft libera ASP .NET MVC | AzidRain | Noticias | 3 | 10-04-2009 19:06:52 |
| Problemas FreeAndNil | OscarG | OOP | 4 | 09-11-2005 12:48:46 |
| No libera la MEMORIA | pruz | Varios | 1 | 27-04-2004 21:30:33 |
|