AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisfrage zu Exit

Ein Thema von kagi3624 · begonnen am 8. Okt 2020 · letzter Beitrag vom 12. Okt 2020
Antwort Antwort
Seite 1 von 8  1 23     Letzte »    
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#1

Verständnisfrage zu Exit

  Alt 8. Okt 2020, 14:44
Delphi-Version: 6
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?

Geändert von kagi3624 ( 8. Okt 2020 um 14:46 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#2

AW: Verständnisfrage zu Exit

  Alt 8. Okt 2020, 14:50
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.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Verständnisfrage zu Exit

  Alt 8. Okt 2020, 14:51
Result in C++? Meinst du return ?

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


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!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Verständnisfrage zu Exit

  Alt 8. Okt 2020, 14:51
Wenn die Bedingung wahr ist wird das else eh nicht abgearbeitet.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Verständnisfrage zu Exit

  Alt 8. Okt 2020, 14:52
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).
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#6

AW: Verständnisfrage zu Exit

  Alt 8. Okt 2020, 14:54
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.
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Verständnisfrage zu Exit

  Alt 8. Okt 2020, 14:57
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 Es gibt aber auch fälle, wo man auch ohne der if Abfrage raus will. In einer Schleife z.B.

Geändert von kagi3624 ( 8. Okt 2020 um 14:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Verständnisfrage zu Exit

  Alt 8. Okt 2020, 15:05
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...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#9

AW: Verständnisfrage zu Exit

  Alt 8. Okt 2020, 15:11
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;

Geändert von Delphi.Narium ( 8. Okt 2020 um 15:30 Uhr) Grund: Smilieeeefeehler
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.623 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Verständnisfrage zu Exit

  Alt 8. Okt 2020, 15:24
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.
Thomas Mueller
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 8  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:48 Uhr.
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