Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 2 de 2
Ir a la página Anterior  1, 2
 
¿Como Destruyo Un Objeto?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Destruyo Un Objeto? 
 
Creo que seria mas facil de lo que parece.
Si guardas los objetos en una matriz tan solo tendras que llamar a la función remove() del array para quitar un objeto de la matriz.

Dim objObjetos as clsMiClase[]
dim objMiObjeto1 as clsMiClase, objMiObjeto2 as clsMiClase

objmiobjeto1 = new clsmiclase()
objmiobjeto1.proviedad = "HOLA"
objmiobjeto2 = new clsmiclase()
objmiobjeto2.proviedad = "HOLA"

objObjetos.Add(objmiobjeto1)
objObjetos.Add(objmiobjeto2)

objobjetos.remove(1) '<-Va por índice.

Podria servir?
 



 
maikl - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Destruyo Un Objeto? 
 
maikl escribió: [Ver mensaje]
Creo que seria mas facil de lo que parece.
Si guardas los objetos en una matriz tan solo tendras que llamar a la función remove() del array para quitar un objeto de la matriz.

Dim objObjetos as clsMiClase[]
dim objMiObjeto1 as clsMiClase, objMiObjeto2 as clsMiClase

objmiobjeto1 = new clsmiclase()
objmiobjeto1.proviedad = "HOLA"
objmiobjeto2 = new clsmiclase()
objmiobjeto2.proviedad = "HOLA"

objObjetos.Add(objmiobjeto1)
objObjetos.Add(objmiobjeto2)

objobjetos.remove(1) '<-Va por índice.

Podria servir?


Yo creo que ahí le has dado... porque me supongo que cyberx0x estará almacenando los objetos creados en un array o una colección, por tanto bastaría eliminar o 'remover' los ítems de ese array una vez hayan sido utilizados o mostrados en un control.
También se podría crear un for...each para hacerlo de un tirón, o incluso mejor: array.Clear()

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Destruyo Un Objeto? 
 
No es igual un caso que otro y la programación de un control lleva un trabajo previo (tampoco tanto, a maiki le llevó una tarde y eso que él estaba abriendo camino de algo que nadie aquí había hecho antes) pero no es ni parecido a trabajar con un conjunto de tablas y probablemente ocupa menos en memoria.

El día que se quiera añadir algo basta con añadir una propiedad a ese control Como no tengo ni idea de esas cosas pues no se si tendrá sentido lo que digo pero se me ocurre que podría tener una propiedad padre y una propiedad hijo para especificar quien es hijo de quien.

Eso supone un problema añadido porque supone la utilización de algoritmos de inserción de elementos en listas y tal que estudiamos en su día (nada del otro mundo) pero que en el caso de utilizar arrays puede hacerse bastante lioso. No se si es le caso, solo lo menciono para ilustrar la posibilidad de añadir funcionalidades.

Pero bueno cyber0x es quien sabe lo que quiere hacer
 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Destruyo Un Objeto? 
 
En general para liberar la memoria que ya no se usa se utilizan dos aproximaciones diferentes:

  • Garbage Collector: se encarga de liberar la memoria que ya no se usa de forma automática y transparente.
  • Refence Counter: es una forma más simple, pero más rápida de liberar la memoria, y es la que usa gambas. En este caso cuando un objeto no tiene una referencia (un puntero hacia ese objeto) se elimina automáticamente. El inconveniente es que como programador debes controlar las referencias que haces a una misma instancia (objeto) y que no estés creando un ciclo.


Entonces, cuando instancias una clase en gambas estás creando un puntero (una referencia) hacia esa instancia. Si de-referencias el objeto, adiós objeto.

'la variable miobjeto es un puntero hacia la nueva instancia de miclase
miobjeto = NEW miclase
'ahora el contador de referencias del objeto es igual a 1 (suponiendo que en ningun otro lugar del programa se creó una instancia de miclase)

...

'Para eliminar la refencia al objeto:
miobjeto = NULL
'Ahora el contador de referencias del objeto es igual a 0 y gambas liberará la memoria que ocupa inmediatamente.
 

 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Destruyo Un Objeto? 
 
según eso tu puedes poner Miobjeto=null al igual que en vb se hacía set objeto=nothing?

¿Estas diciendo eso?

¡Mañana lo pruebo!

 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Destruyo Un Objeto? 
 
Entonces si la variable es local a una función, al salir de la función se destruye la variable como si hiciésemos "=NULL".
Pero si dentro de la función se ha igualado una variable externa al objeto que representaba la variable local, como el objeto aún tiene un apuntador no se eliminará.
Cuando hagamos "varglobal = NULL" será cuando no queden mas apuntadores al objeto y este se libere.
Entonces como VB6.
Entre el garbage collector y este método prefiero este, más rápido a la hora de liberar la memória, sin ningun proceso corriendo por ahí buscando cachos perdidos para liberarlos. Alguien sabe las ventajas del garbage collector? a parte de solucionar descuidos del programador.
Que bonito es aprender!
 



 
maikl - 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 Como Saber Que Objeto Tiene El Enfoque aristicol General 12 Viernes, 20 May 2011, 21:37 Ver último mensaje
Ronny
No hay nuevos mensajes Instanciar Un Objeto Shell General 2 Jueves, 24 Noviembre 2011, 01:31 Ver último mensaje
Shell
No hay nuevos mensajes La Clase Puntos , Como Representar Un Obje... tercoIDE Proyecto gauchoCAD 0 Martes, 28 Abril 2020, 18:54 Ver último mensaje
tercoIDE
No hay nuevos mensajes Crear Objeto Y Ponerlo Como El Objeto Supe... gambafeliz General 4 Martes, 23 Junio 2020, 07:29 Ver último mensaje
v3ctor
 

Publicar nuevo tema  Responder al tema  Página 2 de 2
Ir a la página Anterior  1, 2

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
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