Ver Mensaje Individual
  #2  
Antiguo 07-09-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues hombre, sería recomendable que indicaras qué problemas te está dando.

A ojo de buen o mal cubero te puedo decir que estás rompiendo la regla de oro para el uso de interfaces en Delphi: nunca mezclar referencias a interfaz con referencias a objetos y mucho menos hacer moldeos del tipo

Código Delphi [-]
Lista.Items.Add(IntToStr(interfaz.getValor));

Aquí interfaz es una referencia a la interfaz INotas lo cual aumenta el número de referencias a ella. Pero al hacer el moldeo y agregarlo como si fuese un entero a Lista, no hay manera de decrementar la referencia en algún momento y el objeto que implementa la interfaz se queda colgado en memoria.

Tendría que revisar con más detalle pero el punto es que el mezclar objetos e interfaces generalmente provoca una desincronización en el número de referencias a la interfaz lo que usualmente termina en un "Invalid pointer operation" o un "Access Violation".

Para empezar, si requieres guardar listas de interfaces entonces usa algo más apropiado como TInterfaceList.

// Saludos
Responder Con Cita