Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Objekt auf Übergabe prüfen.

  Alt 20. Jan 2014, 14:19
So wäre es komplett richtig in diesem Kontext
Delphi-Quellcode:
function Test(sl: TStringList; Index: Integer): TObject;
begin
  // Ist Index OutOfRange wird eine Exception geworfen
  // gut so, denn dann ist bei diesem Befehl Schluss
  Result := sl.Objects[Index];
  
  // Hier liegt eine mögliche Fehlerquelle, und darum schmeissen wir eine Exception, wenn das nicht passt
  if sl.OwnsObjects and Assigned( Result ) then
    raise Exception.Create( 'Das kann ich nicht bei einer TStringList mit OwnsObjects!' );

  sl.Delete(Index);

  // Wenn bei der Rückgabe zwingend eine Instanz gefordert ist, dann kann hier nochmals eine Exception geworfen werden
  Assert( Assigned( Result ) );
  // Oder eben
  if not Assigned( Result ) then
    raise Exception.Create( 'Es wird keine Instanz zurückgeliefert, obwohl das so sein muss!' );
end;
Bei der Verwendung
Delphi-Quellcode:
procedure foo;
var
  LObj : TObject;
begin
  LObj := Test( MyStringList, 10 );
  // wenn eine Exception beim Aufruf von Test auftritt, dann wird das hier drunter auch nicht mehr ausgeführt
  try
    // Hier irgendwas mit LObj machen
  finally
    LObj.Free;
  end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat