aber erstmal wird oft genug vergessen das Result von Funktionen auszuwerten
und dann macht es die Fehlerbehandung und auch Fehlersuche extrem spannend, wenn man nicht weiß warum die Funktion nichts machte.
Da gefällt mir übrigens sehr der Ansatz von Rust (ohne, dass ich das bisher selbst probiert habe): Die Funktion gibt einen Result-Typen zurück, und man muss prüfen ob es ein SuccessResult ist, bevor man an den Wert dran kommt. (
https://doc.rust-lang.org/stable/rus...or/result.html)
Bzw. Im Regelfall nimmt man das Result einer Funktion und hängt einfach eine Operation an den Erfolg an. Allso ein automatisches
Delphi-Quellcode:
res := strtoint(text)
if res.Success then
Result := TResult.Create(Success, res.Value * 2)
else
Result := res
Dürfte in Delphi aber kniffelig umzusetzen sein, weil es als varianter record immer den Zugriff auf den Erfolg zulässt und/oder (als Klassenhierarchie) den Aufrufer mit der Speicherfreigabe "beglückt".