Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: Constructor Rückgabewert nil-en statt Instanz zurückzugeben?

  Alt 12. Apr 2018, 08:21
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat