Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #33  
Antiguo 08-04-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 20
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por Al González Ver Mensaje
Es interesante lo que planteas y en más de una ocasión me he preguntado cómo resolverlo, ya que Delphi no tiene un mecanismo directo para evaluar si una referencia de objeto es aún válida o un simple puntero hacia donde estuvo una instancia que ya fue destruida.
...
Veo que me has entendido perfectamente....
Cita:
Empezado por Al González Ver Mensaje
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.
...
Pues creo que estamos muy cerca de dar con una solucion, aunque pienso que ésto ya debió pensarse cuando Delphi se estaba construyendo y que los creadores de Delphi ya debieron darle una solucion, o por lo menos tener alguna rutuna que la lo haga, pero que sea el programador quien decida si la usa o no.., en fin....si GetMem y FreeMem son reemplazable pues creo y viendo la situacion tenemos dos caminos posibles para una solucion(segun yo)
  1. Tener alguna rutina que cuando se libera un determinado Objeto con FreeMen, su referencia apunte a null;está solucion sería la primera que se estaba discutiendo y sería tener una rutina muy similar al FreeMem, es más podriamos escribir nuestra propia version de FreeMen, mas o menos de la siguiente Forma:
    Código Delphi [-]
    procedure MyFreeMem(var P: Pointer[; Size: Integer]);
    begin
       FreeMem(P);//aqui llamamos a nuestra la funcion normal
       P:=nil;//hacermos que P sea Nulo  ésta linea podría ser nuestra solucion
    end;
    Lógicamente tendriamos que hacer que se ejecute nuestra "nueva" version de FreeMem en código fuente de Delphi.
  2. Implementar algun mecanismo(rutina) que permita saber si una referencia apunta a un objeto destruido o no; lo cual viendolo más a fondo me parece que sería más engorroso, pero no imposible dado tu ejemplo que propones en el anterior post.
La cuestion es que de una u otra forma se solucione...
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 bibliotecarioy 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
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 11:00:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi