Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Clase Destructora
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Clase Destructora 
 
Tengo una clase (aspirante a convertirse en componente... pero todavía no) que hereda de gridview. Cuando cierro el formulario que la contiene genera por consola una serie de warnings de "allocations non freed".

Imagino que se refiere a que hay valores asignados en memoria que al destruir la clase quedan ocupados y no puede liberarse la memoria que ocupa. ¿Cómo se puede evitar eso?

Creo que debería haber un método inverso de _new()

que permitiese destruir una clase...

¿Alguna pista?
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Clase Destructora 
 
Por supuesto. No esta documentada, ni aparece en la IDE como pista cuando comienzas a escribir un método especial.

Public Sub _free()
...
End
 


Aqui tienes un ejemplo del componente gb.net.pop3. Linea 114-118

El mensaje del que hablas es uno de los mas difíciles de solucionar, cualquier ayuda que necesites no dudes en consultar!
 



 
última edición por sebikul el Lunes, 18 Marzo 2013, 03:32; editado 2 veces 
sebikul - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Clase Destructora 
 
¡Gracias! Justo lo que buscaba.
Ya te contaré cómo me ha ido.

Saludos.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Clase Destructora 
 
Pues no funciona. Mejor dicho sí funciona, pero no desaparece el error. El evento se dispara perfectamente... pero sigue dándome el warning de que 14 allocations non freed.
La clase se plantea así:
Export

Inherits GridView

Property consulta As String
Property order As String
Property aanchos As Integer[]
Property atitulos As String[]
Property hconn As MConexion
Property filtro As String
Property Read tabla As String
Property rslt As Result
Property formulario As Form
Property bgcolor As Integer
Property forecolor As Integer
Property cebra As Boolean
Property colorresaltado As Integer
Property verIdentificador As Boolean
Property Read isShift As Boolean

Private rs As Result
Private orden As String
Private anchos As New Integer[]
Private hcon As MConexion
Private titulos As New String[]
Private sql As String
Private formu As Form
Private query As New Collection
Private obs As Observer
Private lastcolor As Integer
Private lastrow As Integer
Private lastcolumn As Integer
Private colordefondo As Integer
Private colordeletra As Integer
Private actual As Integer
Private lcebra As Boolean
Private fila As Integer
Private colorceldactiva As Integer
Private verId As Boolean
Private may As Boolean
 


Como veis tiene 15 properties que, por proximidad de número, creo que son las que no se liberan (salvo tal vez el observer... imagino).
Lo que he intentado, ingenuo de mí, es restaurarlas a los valores originales, es decir a 0 los integer, etc. etc. Los que se dejan a Null... pero no he solucionado nada con ello.
Es que no sé cómo forzar la liberación de una variable. En VB, creo recordar, siempre podías poner algo así como
Citar:
mivariable = nothing

Cosa que aquí echaría de menos...

Por si alguien se anima, adjunto la clase entera. Es un gridview al que se han asociado comportamientos y objetos, de manera que lleve en su interior todo lo necesario para funcionar. (Si a alguien le interesa adjuntaré un ejemplo de cómo funciona... cuando lo haga). En última instancia me gustaría transformarlo en componente, de manera que en el IDE apareciesen algunas de sus propiedades y demás.

Xgrid.class.tar.gz
Descripción:  
Descargar
Nombre del archivo: Xgrid.class.tar.gz
Tamaño: 3.15 KB
Descargado: 61 veces
Xgrid.class.tar.gz
Descripción:  
Descargar
Nombre del archivo: Xgrid.class.tar.gz
Tamaño: 3.15 KB
Descargado: 61 veces
Xgrid.class.tar.gz
Descripción:  
Descargar
Nombre del archivo: Xgrid.class.tar.gz
Tamaño: 3.15 KB
Descargado: 61 veces

 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Clase Destructora 
 
Para poder ayudarte necesitaría el proyecto completo, ya que sino no puedo ejecutar esta clase por separado en un proyecto vació. Faltan otras clases que no estarían declaradas. Intenta declarar _free de ésta manera a ver si funciona.

Public Sub _free()
rs = Null
anchos = Null
hcon = Null
titulos = Null
formu = Null
query = Null
obs = Null
End

 



 
última edición por sebikul el Lunes, 18 Marzo 2013, 19:05; editado 2 veces 
sebikul - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Clase Destructora 
 
Ok. A ver si tengo un ratito y te hago una ejemplo de uso de la clase.

Saludos.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Clase Container shordi Controles/Librerías/Componentes 2 Domingo, 12 Diciembre 2010, 20:41 Ver último mensaje
shordi
No hay nuevos mensajes Ejemplo De Clase Publica Y Clase Privada Shell Aplicaciones/Fragmentos de Código 2 Martes, 28 May 2013, 11:41 Ver último mensaje
shordi
No hay nuevos mensajes ¿ Es La Clase Padre Una Clase Abstracta ? Shell General 3 Viernes, 04 Julio 2014, 08:58 Ver último mensaje
jsbsan
No hay nuevos mensajes Clase Audio Y Clase Configuracion De Audio... v3ctor Aplicaciones/Fragmentos de Código 3 Jueves, 08 Octobre 2015, 08:35 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron