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
|
|||
|
|||
Dudas sobre interfaces...
Hola, tengo unas dudas sobre el uso de interfaces....
Por ahora paso un programilla y me gustaría saber xq falla y luego me gustaría hacer más preguntas... El programa tiene 2 botones y 2 listas... pulsando varias veces al primer botón se crearían varios objetos q luego al pulsar en el segundo botón, los mostraría en las listas usando las interfaces... Hay 2 interfaces y cada uno se muestra en una de las listas (TListBox).
Última edición por dec fecha: 07-09-2005 a las 12:09:03. Razón: (Encerrar el código fuente en la etiqueta DELPHI) |
#2
|
||||
|
||||
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
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 |
#3
|
||||
|
||||
Aja...
y la duda es???
__________________
El malabarista. |
#4
|
|||
|
|||
Más datos...
He hecho el cambio de TList por TInterfaceList, el fallo ocurre al pulsar en boton3 y a la 1ª pasada. Lo q hace el programa es crear una Lista con Interfaces de un objeto q almacena 2 números (uno por cada interfaz). Pulsando el primer botón, crearía un objeto y lo guardaría como interfaz en miLista que es de tipo TInterfaceList (se tendrían q pulsar varias veces para crear varios números). Luego pulsando el segundo botón, tendría q aparecer en cada listBox los nºs almacenados, un nº por cada tipo. Pero al pulsarlos fallan los métodos para meter los valores de la interfaz en el TListBox.
Venga aqui os dejo el código, un saludo y gracias por la ayuda.
Última edición por jmariano fecha: 09-09-2005 a las 14:33:18. Razón: Uso de la etiqueta [delphi] |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|