Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Uso adecuado del destructor (https://www.clubdelphi.com/foros/showthread.php?t=86406)

BDWONG 04-08-2014 05:44:46

Uso adecuado del destructor
 
Buenas tengo duda de como usar correctamente el destructor en object pascal(dephi) porque he visto que cuando se instancia el objeto de alguna clase en algunos ejemplos usan el objeto y no la liberan pero en otros casos si lo hacen.

Asi que mi pregunto todos los objetos se tienen que liberar o solo en algunas ocasiones esto me parece confuso ya que si yo creo una clase de tipo "auto" la instancio y creo el objeto, accedo a todos sus metodos etc y ya no lo necesito lo tengo que liberar o el mismo delphi lo liberar al momento de concluir el programa

espero sus respuestas saludos...

ecfisa 04-08-2014 07:27:01

Hola BDWONG.

Basta una rápida búsqueda en los foros:Y figuran más enlaces al pié de esta página...

Saludos :)

Neftali [Germán.Estévez] 04-08-2014 10:04:29

Cita:

Empezado por BDWONG (Mensaje 479675)
...me pregunto todos los objetos se tienen que liberar o solo en algunas ocasiones esto me parece confuso ya que si yo creo una clase de tipo "auto" la instancio y creo el objeto, accedo a todos sus metodos etc y ya no lo necesito lo tengo que liberar o el mismo delphi lo liberar al momento de concluir el programa

Todos los objetos deben liberarse una vez que ya no se utilizan.
Los que crees tú deberías encargarte de liberarlos tú y los que cada elemento cree debería encargarse él de liberarlos (para ser organizado).
Hay muchas variantes, pero la idea principal es siempre la misma.

Tal vez si comentaras algún ejemplo concreto en el que tengas dudas del funcionamiento podemos comentarlo.

Al acabar/cerrar el programa, la memoria se libera, así que si no has liberado algo, esa memoria se liberará al finalizar, pero no es correcto ir dejando cosas "sin destruir" y esperar a que el programa termine para que ese memoria quede disponible. :(

BDWONG 05-08-2014 00:00:15

Gracias
 
Bueno gracias por su ayuda he resulto varias dudas, por ultimo estuve leyendo que en un programa secuencial que solo maneja
datos primitivos no era necesario destruir el objeto.

Pero estaría mal si lo hiciera un ejemplo:
Código Delphi [-]
TYPE
  Ttrasporte=class(TObject)
    Tipo_Trasporte:string;
    constructor create(tipo:string);
    procedure Arrancar;
    procedure Frenar;

  end;

constructor Ttrasporte.create(tipo: string);
begin
    self.Tipo_Trasporte:=tipo;
end;

procedure Ttrasporte.Arrancar;
begin
    Writeln('EL ',self.Tipo_Trasporte,' arranco');
end;

procedure Ttrasporte.Frenar;
begin
    Writeln('EL ',self.Tipo_Trasporte,' freno');
end;

var
auto:Ttrasporte;
begin
  try
  auto:=Ttrasporte.create('Mustang');
  auto.Arrancar;
  auto.Frenar;
  finally
    FreeAndNil(auto);
  end;
  readln;
end.
Gracias saludos...

Neftali [Germán.Estévez] 05-08-2014 09:36:56

Cita:

Empezado por BDWONG (Mensaje 479734)
estuve leyendo que en un programa secuencial que solo maneja
datos primitivos no era necesario destruir el objeto.

No se a qué te refieres con "datos primitivos".
En cuanto al ejemplo, tal y como está sería lo correcto.

Tú creas el objeto auto de tipo Ttrasporte, por lo tanto tú eres el encargado de destruirlo.
^\||/


La franja horaria es GMT +2. Ahora son las 02:09:39.

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