![]() |
![]() |
| 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
|
||||
|
||||
|
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. |
|
#2
|
||||
|
||||
|
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. |
|
#3
|
|||
|
|||
|
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... |
|
#4
|
||||
|
||||
|
doctorhd,
Cita:
![]() Te sugiero revisar y probar todo lo comentado en el Msg #7. Espero sea útil ![]() Nelson. |
|
#5
|
|||
|
|||
|
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.. |
|
#6
|
||||
|
||||
|
doctorhd,
Cita:
![]() Cita:
![]() Nelson. |
|
#7
|
|||
|
|||
|
nlsgarcia, citando el mismo texto que me indicas...
Cita:
Cita:
Cita:
Saludos |
|
#8
|
||||
|
||||
|
doctorhd,
Cita:
![]() Cita:
Espero sea útil ![]() Nelson. |
|
#9
|
||||
|
||||
|
doctorhd:
Una cosa es un puntero a la instancia (referencia de objeto) y otra un puntero a una variable puntero a la instancia (referencia de variable objeto). Cuando el parámetro es "Var", estás pasando éste último. De lo contrario estás pasando el primero, copiándose ese puntero en el parámetro, el cual actúa como una simple variable objeto local. Si lo pones en Nil, sólo esa "variable" adquiere el valor de Nil; las demás variables (exteriores) que apunten a la misma instancia de objeto seguirán igual. Espero no haberte confundido. Saludos. ![]()
__________________
Tras casi seis años de trabajar para una empresa alemana como desarrollador Delphi, se vieron forzados a dejarme ir (temas presupuestales). Así que ahora estoy abierto a escuchar nuevas ofertas. |
![]() |
| 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 |
|