![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Cita:
Si es solo para lectura y ha sido pensado para eso, pues creo que debería mostrar un error¿verdad? o no permitir directamente tal instruccion y es por eso mi confucion. ![]() Como dije claramente en mi anterior post no tengo una solucion para lo que se pretendía hacer, el hecho de que hubiera hecho uso de Self, fué solo un intento y creo que lo explique claramente. Pero me llama la atencion el código que propones en tu clase "TMagiaClientDataSet"La verdad que me has abierto nuevas perpectivas.. , aunque no exactamente siguiende ese mismo camino. por ejemplo:Cita:
Teniendo creado(instanciado) un formulario de una determinada clase de la siguiente forma: y sabiendo que en la clase TChildForm en su evento OnClose tenemos Ahora el asunto es: ¿cómo lograr saber que el objeto al que hace referencia la variable "MyForm" ha sido liberado? OJO: todos sabemos que cuando un objeto se libera, pues la referencia que le apuntaba de igual forma sigue referenciando a la misma direccion de memoria donde estaba el objeto.Es decir el espacio de memoria del objeto se libero pero su apuntador(referencia) sigue apuntadolo. Pues ..en lo anteriores post hemos discutido que la solucion sería poner al apuntador en nulo (nil)despues de la destruccion del objeto y luego para saber si la referencia apunta a un Objeto válido podriamos poner o bien usando la funcion Assigned Ahora vá la pregunta ¿Existe alguna forma de determinar que la referencia de un objeto apunta a un objeto no destruido sin estar poniendola a nulo cada vez que se libera el objeto?. Es decir.. yo como programador pienso y digo hipoteticamente:"No quiero que la referencia del objeto se ponga en nulo al momento de destruirse el objeto , más bien quiero que siga apuntado a la misma direccion aunque el objeto ya esté liberado" Pero si más adelante en mi código quisiera saber si el objeto fue destruido o nó ¿como lo haría? ¿? qué código debiera poner en lugar de o bien ¿Cómo lo soluciono? ¿Delphi posee algun mecanismo o funcion que me permita solucionarlo? ![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 |
|
#2
|
||||
|
||||
|
Cita:
Cita:
Pero ahora que vuelvo a leer el planteamiento de parte tuya, recordando que GetMem y FreeMem son las funciones que utiliza nativamente una clase para reservar y liberar el bloque de memoria de la instancia, y que tales funciones son reemplazables , se antoja posible implementar una especie de lista de punteros liberados, para buscar en esa lista la dirección contenida en una variable objeto no Nil, y con ello determinar si se trata de un objeto que ya fue destruido o no.El inconveniente a resolver sería el de las coincidencias de bloques, es decir, aquellos casos donde una nueva instancia de objeto venga a ocupar la parte inicial (o el bloque de memoria completo) que ocupaba previamente otro objeto ya destruido. Quizá una solución a esto sería hacer que GetMem desplace el bloque que devuelve para que no haya coincidencias o algún control similar, pero eso haría crecer constantemente la memoria usada por la aplicación, por lo que se necesitaría de cierta ayuda de parte del programador, como para decir "estas variables ya no me interesa evaluar", lo cual nos remite, una vez más, a la recomendación de que cada programador se haga responsable de la vida de sus variables objetos. No obstante el antojo de darle algunas vueltas más la tuerca persiste, e intentar lo que comento de GetMem y FreeMem puede ser cuando menos un ejercicio interesante (sin olvidar que esas funciones no sólo se utilizan para instancias de objetos). ![]() Saludos. Al González. |
|
#3
|
||||
|
||||
|
Cita:
.Cita:
, en fin....si GetMem y FreeMem son reemplazable pues creo y viendo la situacion tenemos dos caminos posibles para una solucion(segun yo)
![]() Como podrás ver, si se puede lograr la primera opcion creo que ya la cosa se soluciona...ALELUYA.. ¿verdad? o como lo vés tú amigo Alberto, ya que tú tienes mas experiencia que yo, pues eres un tremendo bibliotecario y yo solo soy un simple aprendís![]() Saludos... ![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| 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 |
|