Hallo!
Ich eine Frage zur Verwendung eigener Konstruktoren.
Allgemein:
Objektreferenz := Klasse.Create;
Konkret:
MeinAuto := TAuto.Create;
Ich möchte erreichen, dass zu dem Zeitpunkt wenn das Objekt erzeugt wird, einige Datenfelder des Objekts mit vorgegebenen Werten und
nicht mit Standardwerten initialisiert werden.
Standardwerte sind:
- Datenfelder mit einem ganzzahligen Datentyp (z.B. Integer) werden mit 0 initialisiert
- Datenfelder mit einem String-Typ werden durch eine leere Zeichenkette initialisiert
Wie gesagt, wenn "MeinAuto" erzeugt wird, sollen eigene Werte über einen eigenen Konstruktor in die Datenfelder des Objekts geschrieben werden.
Hier die
Unit mit der Beispielklassendefinition:
Delphi-Quellcode:
type
TAuto = class(TObject)
private
FFarbe: string;
procedure SetFarbe(Farbe: string);
constructor Create(col: string);
public
property Farbe: string read FFarbe write SetFarbe;
end;
Delphi-Quellcode:
constructor TAuto.Create(col: string);
begin
inherited Create; //hierdurch wird der ursprüngliche Konstruktor aufgerufen
FFarbe:='rosa';
end;
Und hier das Beispielprogramm in einer anderen
Unit:
Delphi-Quellcode:
var
LKW: TAuto;
begin
LKW:=TAuto.Create;
LKW.Farbe:='rot';
Leider funktioniert das so nicht.
Die Farbe wird erst mit der Zeile
LKW.Farbe:='rot';
gesetzt. Die Initialisierung des Feldes "Farbe" im Konstruktur
FFarbe:='rosa';
erfolgt nicht.
Was mache ich falsch?