Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-04-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 22
sitrico Va por buen camino
Question Sobre las perdidas de memoria (memory leak)

Estoy trabajando en una aplicación y me ví en la necesidad de crear un objeto (practicamente un componente), y tengo que insertarle varios controles en tiempo de ejecución. Los creo con el siguiente codigo:

Código Delphi [-]
constructor TSNMCTimePlanner.Create(AOwner: TComponent);
begin
  inherited;
FHoursFont := TFont.Create;
FTimePanel := TPanel.Create(Self);
end;

destructor TSNMCTimePlanner.Destroy;
begin
FTimePanel.Free;
FHoursFont.Free;
inherited Destroy;
end;

procedure TSNMCTimePlanner.ShowHours;
Var
i,h : integer;
l : tLabel;
begin
   h := HourOf(FStartTime);
For i := 0 to HoursBetween(FEndTime,FStartTime) do
   Begin
   l := TLabel.Create(FTimePanel);
   l.Left := 5;
   l.Top := (i * FTimeBlockSize * TimeBlockPerHour);
   l.Font := FHoursFont;
   l.Caption := IntToStr(h);
   l.AutoSize := False;
   l.Width := 25;
   l.Alignment := taCenter; 
   FTimePanel.InsertControl(l);
   Inc(h);
   If h = 13 Then h := 1;
   End;
end;

end.

Con FTimePanel y FHoursFont no creo que haya problema, pero con los componentes insertados (en ShowHours) no estoy seguro si se liberaran correctamente al destuir el objeto.

Alguien me sabria decir si los tLabel creados con el ciclo for se liberarán correctamente. Segun tengo entendido al crearlos con el owner asignado al fTimePanel al destruir fTimePanel se destuirán todos los componentes que le pertenezcan

Uso D7, gracias
__________________
Sitrico
Responder Con Cita
  #2  
Antiguo 05-04-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
No tendrás problemas. Un contenedor (el panel) al ser destruido, liberará todos los controles que contiene.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 05-04-2007
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
De cualquier forma, siempre es bueno usar herramientas como MemProof, que te indicarán cualquier memoria asignada que no se destruya.

// Saludos
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda sobre crear puntero a memoria Lambda Varios 1 30-03-2007 19:20:30
saber si una unidad de disco es una memoria flash o memory stick compaqdavid Varios 1 06-12-2006 15:07:10
Sobre el Gestor de Memoria FastMM456 Jesús Pena Varios 1 19-01-2006 04:06:01
insuficiente memoria / insuficient memory mmateo25v Conexión con bases de datos 6 23-03-2005 17:46:27
Perdidas de conexión con Firebird 1.5 apicito Firebird e Interbase 1 22-01-2005 18:17:11


La franja horaria es GMT +2. Ahora son las 01:17:49.


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