Objekte erstellen, instantiieren und freigeben

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Das Delegationsmodell verwenden - Index

Viele der Objekte, die Sie im Formular-Designer verwenden, wie beispielsweise Schaltflächen oder Eingabefelder, sind sowohl zur Entwurfszeit als auch zur Laufzeit sichtbar. Einige davon, wie beispielsweise Standarddialogfelder, erscheinen nur zur Laufzeit. Wieder andere, wie beispielsweise Timer- und Datenquellenkomponenten, haben zur Laufzeit keine visuelle Darstellung.

Möglicherweise wollen Sie Ihre eigenen Objekte erstellen. Beispielsweise könnten Sie eine TEmployee-Klasse definieren, die die Eigenschaften Name, Title und HourlyPayRate enthält. Anschließend könnten Sie die Methode CalculatePay einfügen, die die Daten aus HourlyPayRate verwendet, um den Betrag für einen Gehaltsscheck zu berechnen. Die Deklaration für den Typ TEmployee könnte wie folgt aussehen:

type
  TEmployee = class(TObject)
  private
    FName: string;
    FTitle: string;
    FHourlyPayRate: Double;
  public
    property Name : string read FName write FName;
    property Title: string read FTitle write FTitle;
    property HourlyPayRate: Double read FHourlyPayRate write FHourlyPayRate;
    function CalculatePay: Double;
  end;

Neben den Feldern, Eigenschaften und Methoden, die Sie definiert haben, erbt TEmployee alle Methoden von TObject. Sie könnten diese Art Typdeklaration in die Abschnitte interface oder implementation einer Unit aufnehmen und dann durch Aufruf der Methode Create, die TEmployee von TObject erbt, Instanzen der neuen Klasse erstellen:

var
  Employee: TEmployee;
begin
  Employee := TEmployee.Create;
end;

Bei der Methode Create handelt es sich um einen so genannten Konstruktor. Sie reserviert Speicher für ein neues Instanzobjekt und gibt einen Verweis auf das Objekt zurück.

Komponenten auf einem Formular werden automatisch erstellt und freigegeben. Wenn Sie jedoch Ihren eigenen Code schreiben, um Objekte zu instantiieren, sind Sie auch für ihre Freigabe verantwortlich. Jedes Objekt erbt eine Destroy-Methode (einen so genannten Destruktor) von TObject. Um ein Objekt freizugeben, sollten Sie jedoch die Methode Free aufrufen (die ebenfalls von TObject geerbt wird), weil Free prüft, ob ein nil-Verweis vorliegt, bevor sie Destroy aufruft. Beispiel:

Employee.Free;

Dieser Aufruf gibt das Objekt Employee und den dafür reservierten Speicher frei.

Siehe auch