![]() |
Re: Wozu CREATE zur Instantiirung eigener Objektklassen?
letztendlich handelt es sich bei Create nicht nur um eine Methode sondern den Constructor. Dieses Schlüsselwörtschen anstelle von "function" oder "procedure" gibt an das durch den Aufruf dessen Speicher reserviert wird.
Bei Single etc. musst du keinen Constructor aufrufen weil dort von vornherein klar ist wie groß der Datentyp ist und somit wird auch beim compilieren der Platz schon eingeplant. Bei Objecten ist das anders. Durch Vererbung, damit verbunden das Überschreiben von Methoden etc. steht nicht von vornherein fest wieviel Speicher für eine Objectinstanz benötigt wird (denn du kannst eine Variable vom Typ TObject haben wo sich ein TImage dahinter verbirgt, denn ein TImage ist gleichzeitig auch ein TObject). Der Vorteil von dem Constructor/Destructor-"Zeug" ist das man eben Methoden überschreiben kann, somit auf bestimmte Ereignisse reagieren kann ohne alles neu zu schreiben etc. Eine Objektinstanz ist letztendlich nichts anderes als ein Pointer. Mit dem Aufruf des Constructors reservierst du also Speicher worauf dann dein Objectinstanz-Pointer zeigen kann. Auf den seiten von ![]() |
Re: Wozu CREATE zur Instantiirung eigener Objektklassen?
Hallo,
Zitat:
Auch bei einem Record ist von Anfang an klar, wie groß er ist. Deshalb liegt er immer auf dem Stack und verhält sich somit wie eine primitive Variable. Such doch mal nach "Heap" und "Stack", das sind die beiden Speicherbereiche, in denen Primitives (Stack) bzw. dynamische Variablen (Objekte, Strings, dyn. Arrays) gespeichert werden. Zitat:
Delphi-Quellcode:
Es kann natürlich auch sein, dass im Konstruktor/Destruktor etwas schiefgeht, darum ist das hier bombensicher:
Class1 := TClass1.Create;
Class2 := TClass2.Create; try Tu was; finally Class2.Free; Class1.Free; end;
Delphi-Quellcode:
Class1 := TClass1.Create;
try Class2 := TClass2.Create; try Tu was; finally Class2.Free; end; finally Class1.Free; end; Zitat:
Delphi-Quellcode:
Application.CreateForm(TForm1, Form1);
Zitat:
Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr. |
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