Zur Ergänzung noch die Lösung per Factory-Methode:
Delphi-Quellcode:
TMyClass = class
public
class function TryGetInstance(const AValue: string; out AInstance: TMyClass): Boolean;
end;
class function TMyClass.TryGetInstance(const AValue: string; out AInstance: TMyClass): Boolean;
var
NewInstance: TMyClass;
begin
NewInstance := TMyClass.Create;
Result := NewInstance.Init(AValue);
if Result then
AInstance := NewInstance
else
NewInstance.Free;
end;
Vorteil ist, dass du zur Verwendung nur brauchst:
Delphi-Quellcode:
var
MyObject: TMyClass;
begin
if TMyClass.TryGetInstance('blub', MyObject) then
List.Add(MyObject);
Besser wäre natürlich, wenn die Prüfung wie schon genannt wurde auch z.B. per Klassenmethode möglich wäre, dann müsste bei einem Fehler gar nicht erst eine dann nicht benötigte Instanz erstellt werden.