![]() |
AW: Verständnisfrage zu Exit
Zitat:
Dann verhält sich dein Programm ja beim Debuggen womöglich anders, als in echt, was schon ein bissl sinnlos wäre. Und natürlich geht es nur, wenn es eine Funktion und keine Prozedur ist. Und natürlich auch nur mit Boolean als Result. :stupid: |
AW: Verständnisfrage zu Exit
Nein, ich meinte doch Folgendes:
Delphi-Quellcode:
Das "False" wäre ja nicht nötig, kann man zum Debuggen rein und hinterher wieder rausmachen.
Function LeseJPGEin(DatnameMV:string):Boolean;
begin Result := False; If not DateiVorhanden then exit(False); If not HeaderOK then exit(False); If not EndianOK then exit(False): .... (Oder man geht nach Hagen und macht das "Result := False" erst gar nicht hin, aber ich bin da gern auf der sicheren Seite.) |
AW: Verständnisfrage zu Exit
Zitat:
Das
Delphi-Quellcode:
kann man nach hinten verschieben.
Result := False;
Delphi-Quellcode:
Grade dein Procedurename/Funktionsname ist für ein Result geeignet. Laden des Jpeg hat funktioniert oder eben nicht.
Function LeseJPGEin(DatnameMV:string):Boolean;
begin If not DateiVorhanden then exit(False); If not HeaderOK then exit(False); If not EndianOK then exit(False): Result := True; .... |
AW: Verständnisfrage zu Exit
Zitat:
|
AW: Verständnisfrage zu Exit
Weil das Exit(False) sonst knallt?
Und ja, diese Exit sind hier schon bissl blöd. Es ist toll, wenn die Prozedur nicht nur Exit macht, sondern wenigstens noch Funktion noch ein False sagt, 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. Exceptions sind schon was Tolles, das auch gute Infos geben könnte. |
AW: Verständnisfrage zu Exit
Zitat:
![]() Bzw. Im Regelfall nimmt man das Result einer Funktion und hängt einfach eine Operation an den Erfolg an. Allso ein automatisches
Delphi-Quellcode:
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".
res := strtoint(text)
if res.Success then Result := TResult.Create(Success, res.Value * 2) else Result := res |
AW: Verständnisfrage zu Exit
Zitat:
Delphi-Quellcode:
übergeben wird.
var
Erstens kann man dadurch mehr als einen Wert übergeben, und zweitens finde ich den Aufruf
Delphi-Quellcode:
viel praktischer als
If BestimmeHeaderPos(HeaderPos) then begin
MachWasMitHeaderPos;
Delphi-Quellcode:
HeaderPos := BestimmeHeaderPos;
If HeaderPos > 0 then begin MachWasMitHeaderPos; |
AW: Verständnisfrage zu Exit
Zitat:
Aber ich find grade nicht. |
AW: Verständnisfrage zu Exit
Zitat:
Zitat:
|
AW: Verständnisfrage zu Exit
Zitat:
Ich hab über diese Thematik übrigens auch schon gebloggt: ![]() ![]() Kommt jetzt aber arg vom Thema "Exit oder nicht" ab ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz