Anbei ein konstruiertes Beispiel:
Delphi-Quellcode:
function Test(sl: TStringList; Index: Integer): TObject;
begin
Result := sl.Objects[Index];
//was hier Prüfen?
sl.Delete(Index);
end;
In der Zeile
Result := sl.Objects[Index];
wird ein Objekt übergeben. Nun gehen wir mal davon aus, Index ist außer Bereich, also gibt es eine Fehlermeldung. Das ist auch so gewollt.
Nun weiter im Programm, als nächstes ist die Zeile
sl.Delete(Index);
dran. Falls der Index zu hoch ist, wird es auch hier eine Fehlermeldung geben. Und das soll nicht sein. Eine Meldung ist ok, zwei zuviel.
Jetzt bitte nicht fragen wieso hier Index nicht vorher überprüft wird, ist nur ein Beispiel.
Wie bekommt man nun mit ob in der ersten Zeile alles richtig abgelaufen ist? Es geht nicht drum in der ersten Zeile eine Fehlermeldung abzufangen. Die soll kommen wenn Index falsch ist, nur will ich in dem Fall keine zwei gleiche Meldungen.
Man könnte Result prüfen bevor man die zweite Zeile ausführt, nur wie? Auf nil? Und nun die Frage: muss man Result in dem Fall vorher nil zuweisen? Sieht irgendwie sonderbar aus.
Delphi-Quellcode:
begin
Result := nil;
Result := sl.Objects[Index];
if Result <> nil then
sl.Delete(Index);