Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objekte in Klassen: Was wird alles zerstört? (https://www.delphipraxis.net/57807-objekte-klassen-wird-alles-zerstoert.html)

alzaimar 27. Nov 2005 14:44

Re: Objekte in Klassen: Was wird alles zerstört?
 
Korrigiert. Ich sagte ja, "Wenn ich keinen Bockmist gebaut habe...". Ich kenn mich doch... :mrgreen:

Das mit dem Before/AfterDestruction bringt eigentlich nur Supersonderfällen etwas. Ich habs noch nie benötigt.

GuenterS 27. Nov 2005 14:54

Re: Objekte in Klassen: Was wird alles zerstört?
 
Zitat:

Zitat von alzaimar
Tut mir leid, ich halte Vieles von dem, was hier gepostet wurde, für überflüssig und irreführend. Jede Klasse sollte sich 'um seinen eigenen Kram' kümmern, und zwar so (eigentlich ganz einfach):

Delphi-Quellcode:
type TKlasseA = class
    a: integer; //irgend ein Feld, ist ja egal, was es genau ist
  end;
  TKlasseB = class
    KlasseA: TKlasseA;
  Public
    Constructor Create;
    Destructor Destroy; Override;
    Property ZugriffAufA : TKlasseA Read KlasseA;
  end;
  TSuperKlasse = class
    KlasseB: TKlasseB;
  Public
    Destructor Destroy; Override;
    Property ZugriffAufB : TKlasseB Read KlasseB;
  end;

Constructor TKlasseB.Create;
Begin
  Inherited Create;        // unnötig, schadet aber nicht
  KlasseA := TKlasseA.Create;    // Was ich erschaffe ...
End;

Destructor TKlasseB.Destroy; // <--hier war ein kleiner Rechtschreibfehler
Begin
  FreeAndNil (KlasseA); // ... zerstöre ich auch wieder ...
  Inherited;
End;

Constructor TSuperKlasse.Create;
Begin
  Inherited Create;         // unnötig, schadet aber nicht
  KlasseB := TKlasseB.Create;     // Was ich erschaffe ...
End;

Destructor TSuperKlasse.Destroy;
Begin
  FreeAndNil (KlasseB); // ... zerstöre ich auch wieder ...
  Inherited;
End;
Vorausgesetzt, ich hab hier keinen Bockmist gemacht, klappt das Immer. Ohne BeforeDestruction oder AfterDestruction. Wenn man das als eiserne Regel befolgt ("Was ich erschaffe, zerstöre ich auch") und dann noch Resourcenschutzblöcke (Try..Finally) verwendet, baut auch sichere, also stabile und exploitresistente(re) Programme.

Wenn Du schon properties einführst dann solltest Du vielleicht die Variablen KlasseB und KlasseA als privat deklarieren.

alzaimar 27. Nov 2005 15:17

Re: Objekte in Klassen: Was wird alles zerstört?
 
Na gut. Sind jetzt Alle zufrieden? :wall:

tigerman33 27. Nov 2005 15:26

Re: Objekte in Klassen: Was wird alles zerstört?
 
Es ist eigentlich Konvention, Feldbezeichner mit einem großen F zu beginnen... :wink: :mrgreen:

alzaimar 27. Nov 2005 18:11

Re: Objekte in Klassen: Was wird alles zerstört?
 
Mit mir kann man es ja machen. :roteyes:.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz