Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - If Abfrage
martin300 - Do 14.08.08 15:01
Titel: If Abfrage
Hallo,
ist es bei folgender Beispielfunktion möglich,
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function Functiontest.plus(value: Integer; value1: Integer):Integer; begin
if (value < 10) then begin result:= value + value1 + 1000; end;
result:= value + value1 + 2000; end; |
wenn die if Abfrage true ist das erste Ergebnis zurück zu liefern und dann
aus der Schleife auszusteigen, ohne es mit einem else zu machen.
Dh. mehrere Abfragen hintereinander und beim ersten Result das zutrifft, soll die
Funktion beendet werden.
Danke.
Moderiert von
Christian S.: Code- durch Delphi-Tags ersetzt
Christian S. - Do 14.08.08 15:05
Eine
Schleife [
http://www.if-schleife.de] gibt es in Deinem Code nicht ;-)
Aber Du kannst eine Prozedur oder Funktion mittels
exit verlassen.
mkinzler - Do 14.08.08 15:16
Aber was spricht gegen das else?
Hack Gott - Do 14.08.08 15:20
Titel: Re: If Abfrage
martin300 hat folgendes geschrieben: |
Hallo,
ist es bei folgender Beispielfunktion möglich,
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function Functiontest.plus(value: Integer; value1: Integer):Integer; begin
if (value < 10) then begin result:= value + value1 + 1000; end;
result:= value + value1 + 2000; end; |
wenn die if Abfrage true ist das erste Ergebnis zurück zu liefern und dann
aus der Schleife auszusteigen, ohne es mit einem else zu machen.
Dh. mehrere Abfragen hintereinander und beim ersten Result das zutrifft, soll die
Funktion beendet werden.
Danke.
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt |
Ja natürlich, das ganze sieht dan so aus: (noch ein bisschen schöner gemacht ;-))
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function Functiontest.plus(value, value1: Integer):Integer; begin if (value < 10) then begin result:= value + value1 + 1000; exit; end; result:= value + value1 + 2000; end; |
martin300 - Do 14.08.08 15:23
mkinzler hat folgendes geschrieben: |
Aber was spricht gegen das else? |
Meine Faulheit. Wenn es eine einfachere Möglichkeit gibt, bei der weniger zu tippen ist,
würde ich es machen.
GTA-Place - Do 14.08.08 15:25
Exit; ist länger als else :lol:
Tilman - Do 14.08.08 15:28
martin300 hat folgendes geschrieben: |
mkinzler hat folgendes geschrieben: | Aber was spricht gegen das else? |
Meine Faulheit. Wenn es eine einfachere Möglichkeit gibt, bei der weniger zu tippen ist,
würde ich es machen. |
Na dann warum nicht so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| function Functiontest.plus(value: Integer; value1: Integer):Integer; begin if (value < 10) then result:= value + value1 + 1000 else result:= value + value1 + 2000; end; |
Mit dem gesparten begin und end ist das weniger code als exit ;)
Exit, continue und break gelten genauso wie goto als schlechter Stil, weil sie den Quellcode weniger übersichtlich machen. Trotzdem sollte man ihre Funktion kennen, weil man von Fall zu Fall damit elegant optimieren kann - in diesem Fall ist es aber wohl eigentlich* fehl am Platz ;)
*) wobei natürlich jeder Proggen darf wie er will.
Hidden - Do 14.08.08 15:34
Hi,
Mit 'Exit;' machst du dir da keine Freude; ist keine Logische Programmstruktur und besonders bei Lehrern, etc. kommts nihct gut an ;)
Du kommst wahrscheinlich nativ aus einer Sprache, in der 'return' auch gleich ein Exit enthält?
@Das hier:
1: 2: 3: 4: 5: 6:
| function Functiontest.plus(value: Integer; value1: Integer):Integer; begin if value < 10 then result := value + value1 + 1000 else result := value + value1 + 2000; end; |
Imho hast du hiermit die Richtlinien, finde ich ein kleines Bisschen übersichtlicher. Um einen If-Term muss in delphi übrigens keine Klammer, nervt mich ehrlichgesagt immer etwas bei anderen, wo es mit while und vor allem for(zum Kotzen :D) wie ein Makro oder eine Funktion behandelt wird..
mfG,
martin300 - Do 14.08.08 15:44
Wollte ein Beispiel geben, das sich gut beschreiben lässt. Mein Code
hat mehrere Abfragen und da bei Java automatisch abgebrochen wird, musste
ich den Grund erst finden, warum es in Delphi nicht so ist.
Danke für die Antworten.
Tilman - Do 14.08.08 15:54
Ja das ist in Delphi wirklich anders. Eine andere Variante bietet sich an, wenn man mehrere Bedinungen hat:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function Functiontest.plus(value: Integer; value1: Integer):Integer; begin result := value + value1 + 2000;
if value < 10 then result := value + value1 + 1000; if bla then result := blub; if .. end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!