Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-12-2003
andre andre is offline
Miembro
 
Registrado: may 2003
Ubicación: Entre Rios, Argentina
Posts: 80
Poder: 22
andre Va por buen camino
Global Var Units, ¿que pasa cuando se libera el formulario?

Hola,

Mi duda viene de una conversación en otro hilo de este foro. Cuando declaro una variable en la sección de la unidad (no en la sección de la declaración de la clase del formulario), qué pasa cuando libero la memoria del formulario, esa variable ¿se libera también? o ¿quedará en la memoria hasta que se cierra toda la aplicación?.

Saludos.
__________________
Andre R. Coelho
Universidad Adventista del Plata
Responder Con Cita
  #2  
Antiguo 10-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Creo que te lo he respondido en el otro hilo. Tienes que pensar que tu formulario es una clase, y puede haber muchas instancias de esta misma clase que cada instancia será tendrá un juego único de las variables que pertenecen a esta. Por el contrario las variables que defines fuera de la declaración de la clase, son variables que no tienen ninguna relación con las instancias de la clase del formulario. Cuando liberas una instancia de una clase, esta liberará toda la memoria reservada para esta clase, esto incluye a los campos, o variables pertenecientes a la clase. La variable que esta fuera de la clase definida en la unit, se creará cuando se utilice por primera vez la unit y se liberará cuando finalice la aplicación.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 10-12-2003
andre andre is offline
Miembro
 
Registrado: may 2003
Ubicación: Entre Rios, Argentina
Posts: 80
Poder: 22
andre Va por buen camino
OK, me pareció ocurrente publicar la duda que me había quedado en otro hilo para que algún otro usuario que la tenga la pueda encontrar fácilmente.

Muy bien, muchas gracias otra vez delphi.com.ar.

Saludos.
__________________
Andre R. Coelho
Universidad Adventista del Plata
Responder Con Cita
  #4  
Antiguo 11-12-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Has utilizado pascal alguna vez antes de delphi?, bueno, si no, quizas has utilizado C.

Resulta que una variable de tipo objeto, es en realidad, un apuntador al objeto. Es decir, si declaro una variable como

Código:
var
  Form1 : TForm1;
En realidad, aunque una instancia de la clase TForm1 ocupe muchos bytes, la variable ocupará únicamente 4 bytes, usualmente en el segmento de datos de la aplicación, aunque podrá estar en el stack o en el heap, dependiendo de donde declares la variable. Si esta en la sección de interface, como lo hace normalmente delphi al crear un nuevo formulario, esos 4 bytes estarán reservados durante toda la ejecución de la aplicación, ya que están en el segmento de datos.

Ahora..., el formulario en si, que es una instancia de la clase, residirá en el Heap (monton) y su memoria se reserva al llamar al constructor de la clase y se libera al llamar al destructor.

Código:
  // reserva de memoria
  Form1 := TForm1.Create(Application);
  operaciones...
  // liberación de memoria
  Form1.Free;
Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 11-12-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
delphi.com.ar comentó:
La variable que esta fuera de la clase definida en la unit, se creará cuando se utilice por primera vez la unit y se liberará cuando finalice la aplicación.
¿Cuándo se utiliza por primera vez una unit? ¿Que no es desde el mero comienzo de la aplicación?

// Saludos
Responder Con Cita
  #6  
Antiguo 11-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Exacto... cuando inicia la aplicación recorre todos los Uses de las units del DPR, y así sucesivamente...
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 22:58:03.


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