Delphi-PRAXiS
Seite 1 von 8  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verständnisfrage zu Exit (https://www.delphipraxis.net/205711-verstaendnisfrage-zu-exit.html)

kagi3624 8. Okt 2020 13:44

Delphi-Version: 6

Verständnisfrage zu Exit
 
Als C/C++ Vorgeschädigter denke und schreibe ich immer noch ein result hin und erwarte das ende der Funktion. Nun, da Delphi ja bei einem result nicht die Funktion beendet, dachte ich exit zu benutzen, davor wird in der Delphi Basics Hilfe aber gewarnt. Was spricht eigentlich dagegen sowas zu schreiben und sich anzugewöhnen

Delphi-Quellcode:
if A then begin
  result := 1;
  exit;
end
else if B then...
Die ganzen nachkommenden else if Abfragen brauch ich ja nicht durchzugehen, wenn ich meine Funktion hier beenden will?

Delphi.Narium 8. Okt 2020 13:50

AW: Verständnisfrage zu Exit
 
Tust Du ja auch nicht:
Delphi-Quellcode:
if A then begin
  result := 1;
end
else if B then... // Else besagt doch: Nur wenn das vorherige nicht zutraf. Die Abfrage if b then wird also nicht ausgeführt.
Bei Deinem Beispiel ist das Exit schlicht überflüssig.

Der schöne Günther 8. Okt 2020 13:51

AW: Verständnisfrage zu Exit
 
Result in C++? Meinst du
Delphi-Quellcode:
return
?

Wie auch immer, gegen deinen Code spricht nichts. Außer dass du auch stattdessen schreiben könntest
Delphi-Quellcode:
Exit(1)
.


Zitat:

Zitat von Delphi.Narium (Beitrag 1475135)
Bei Deinem Beispiel ist das Exit schlicht überflüssig.

Wir wissen doch gar nicht ob seine Methode nur ein einziges if..else if.. else if... war oder ob da noch mehr kommt!

mkinzler 8. Okt 2020 13:51

AW: Verständnisfrage zu Exit
 
Wenn die Bedingung wahr ist wird das else eh nicht abgearbeitet.

stahli 8. Okt 2020 13:52

AW: Verständnisfrage zu Exit
 
Da gibt es unterschiedliche Auffassungen, die aber eher dem persönlichen Geschmack geschuldet sind.

Der Code sieht halt mit und ohne Exit unterschiedlich aus.
Funktionelle Probleme bzw. Fehler gibt es durch Exit jedoch nicht.

Du kannst mit Exit in einer Funktion auch direkt den Rückgabewert mitgeben.

Delphi-Quellcode:
if A then
begin
  Exit(1);
end
else
if B then...
Zu beachten ist, dass bei Exit in einem try-finally-Block in den finally-Abschnitt gesprungen wird (und danach - glaube ich - direkt aus der Methode).

Delphi.Narium 8. Okt 2020 13:54

AW: Verständnisfrage zu Exit
 
Naja, dann aber bitte so:
Delphi-Quellcode:
if A then Exit(1);
if B then...
Wenn ich schon mit Exit rausspringe, kann ich mir die nachfolgende Else sparen.

kagi3624 8. Okt 2020 13:57

AW: Verständnisfrage zu Exit
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1475141)
Naja, dann aber bitte so:
Delphi-Quellcode:
if A then Exit(1);
if B then...
Wenn ich schon mit Exit rausspringe, kann ich mir die nachfolgende Else sparen.

Ja, genau so isses :thumb: Es gibt aber auch fälle, wo man auch ohne der if Abfrage raus will. In einer Schleife z.B.

stahli 8. Okt 2020 14:05

AW: Verständnisfrage zu Exit
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1475141)
Naja, dann aber bitte so:
Delphi-Quellcode:
if A then Exit(1);
if B then...
Wenn ich schon mit Exit rausspringe, kann ich mir die nachfolgende Else sparen.

Das war doch nur ein symbolischer Auszug und keine vollständige Methode...

Delphi.Narium 8. Okt 2020 14:11

AW: Verständnisfrage zu Exit
 
Ja, aber hinter einem Exit in 'nem If then brauche ich keine Else. Die Alternative zu was soll denn da dann abgefragt werden, wenn die Alternative, zu der es ggfls. eine weitere geben könnte, bereits beschlossen hat, das hier ultimativ schluss iss? ;-)

@kagi3624
For-, Repeat, While-Schleifen kann man mit break verlassen.

Inhaltlich nicht sinnvoll, aber für's Prinzip geeignet ;)
Delphi-Quellcode:
for i := 0 to MaxInt do begin
  if i > Trunc(Now) then begin
    Result := i div 42;
    break;
  end;
end;

dummzeuch 8. Okt 2020 14:24

AW: Verständnisfrage zu Exit
 
Zitat:

Zitat von stahli (Beitrag 1475138)
Du kannst mit Exit in einer Funktion auch direkt den Rückgabewert mitgeben.

Delphi-Quellcode:
if A then
begin
  Exit(1);
end
else
if B then...

Aber mit Delphi 6, das er laut Profil einsetzt. Das kam erst in einer der XE-Versionen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 Uhr.
Seite 1 von 8  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz