Skocz do zawartości

[Delphi] Jak napisać destruktor?


LordLost

Polecane posty

Witam, mam problem z napisaniem destruktora i mam kilka pytań jak to zrobić:

 

1. Czy instancja klasy dziedziczącej po TComponent powinien być zwalniany w zdarzeniu onClose formy jeśli do niej należy? Wydaje mi się, że destruktor formy niszczy swoje komponenty automatycznie, ale głowy bym nie dał.

 

2. Czy w destruktorze mojej klasy muszę 'uwalniać' obiekty(instancje innych klas), które są jego polami. W tym miejscu nie mam pojęcia, oglądałem przykłady i niektórzy zwalniają inni nie, albo zwalniają tylko niektóre. W pewnej książce, którą posiadam napisane jest, że odziedziczony destruktor nie zwalnia instancji tych klas więc muszę przedefiniować destruktor?

 

Podobno trudniej jest tworzyć niż niszczyć ;)

Link do komentarza
Udostępnij na innych stronach

niszczyc komponenty raczej w onDestroy jesli tworzysz je w onCreate. Jesli tworzysz w onShow to niszczysz w onClose. Ale tutaj osteoznie jesli tworzysz komponent z parentem np TButton.create(form1) to nie niszcz recznie, forma juz to zrobi za ciebie, jesli tworzysz TButton.create(nil) to sam zarzadzasz obiektem.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Ogólnie jak masz takie coś

Tklaska = class
 fInnaKlasa: TInnaKlasa;
 fRekord: TRekord;
end;

to w konstruktorze masz
constructor TKlaska.create;
begin
 fInnaKlasa := TInnaKlasa.Create;
end;

a  w destruktorze

destructor destroy;override;
begin
FreeAndNil(fInnaKlasa);
inhrited;
end;

 

to co tworzysz jawnie, jawnie niszczysz

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...