Autor |
Beitrag |
martin300
      
Beiträge: 186
Erhaltene Danke: 2
|
Verfasst: Do 14.08.08 15:01
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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 14.08.08 15:05
Eine Schleife gibt es in Deinem Code nicht
Aber Du kannst eine Prozedur oder Funktion mittels exit verlassen.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Do 14.08.08 15:16
Aber was spricht gegen das else?
_________________ Markus Kinzler.
|
|
Hack Gott
      
Beiträge: 409
Windows Vista
Delphi 2005 Personal, Delphi 7
|
Verfasst: Do 14.08.08 15:20
_________________ "Je mehr Käse, desto mehr Löcher; Je mehr Löcher, desto weniger Käse. Daraus folgt: Je mehr Käse desto weniger Käse!"
|
|
martin300 
      
Beiträge: 186
Erhaltene Danke: 2
|
Verfasst: 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
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Do 14.08.08 15:25
Exit; ist länger als else 
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: 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.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: 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  ) wie ein Makro oder eine Funktion behandelt wird..
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
martin300 
      
Beiträge: 186
Erhaltene Danke: 2
|
Verfasst: 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
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: 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; |
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|