Kommt drauf an, man könnte auch ein Funktion schreiben die ein Objekt als Parameter übernimmt bearbeitet (z.B. mit Daten füllt) und dann als Funktionsergebnis wieder zurück gibt. Also etwa
Delphi-Quellcode:
function MyFoo(aObject: TObject):TObject;
Begin
if not assigend(aObject)
then Begin
---> Fehlerabbruch
end
else begin
result := aObject;
---> Result mit Daten füllen usw.
end;
end;
Damit kann man das Objekt ausserhalb der Funktion erstellen (z.B. auf der gleichen Ebene auf der es wieder entsorgt werden soll).
Die 2. Option wäre etwa so:
Delphi-Quellcode:
function MyFoo:TObject;
Begin
try
Result := TObject.Create;
---> Result mit Daten füllen usw.
except
---> Fehlerbehandlung
end;
end;
Ist sieht natürlich eleganter aus, verbirgt aber den Aufruf des Konstruktor.
Der Königsweg aber wäre meines Erachtens, den Konstruktor der Klasse so zu erweitern, dass er die Aufgaben von "MyFoo" mit erledigt. Damit würde der Aufruf von MyFoo zu Gunsten des Konstruktors entfallen und alles ist klar.
[edit=Luckie]Delphi-Tags eingefügt. Mfg, Luckie[/edit]