Delphi-PRAXiS
Seite 2 von 10     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi goto-befehl in delphi? (https://www.delphipraxis.net/73851-goto-befehl-delphi.html)

Zacherl 24. Jul 2006 22:42

Re: goto-befehl in delphi?
 
Break geht eben doch: Aufgerufen in einer Schleife bricht es diese an der Aufrufstelle ab.

Beispiel:
Delphi-Quellcode:
var
  i: integer;
begin
  for i := 0 to 10 do
  begin
    if i = 5 then
      break;
  end;
  ShowMessage(IntToStr(i)); //Es wird 5 ausgegeben, da dort die Schleife abbricht
end;
Florian

Oxmyx 24. Jul 2006 22:44

Re: goto-befehl in delphi?
 
Zitat:

Zitat von Florian Bernd
Break geht eben doch: Aufgerufen in einer Schleife bricht es diese an der Aufrufstelle ab.

Sagte ich schon, dass ich von verschachtelten Schleifen rede? Ja, sagte ich.

xaromz 24. Jul 2006 22:46

Re: goto-befehl in delphi?
 
Hallo,
Zitat:

Zitat von Florian Bernd
Break geht eben doch: Aufgerufen in einer Schleife bricht es diese an der Aufrufstelle ab.

wie oxmyx schon schrieb, was machst Du, wenn Du aus zwei (drei...) Schleifen springen willst? Mit Break bleibt Dir nur, ein Flag zu setzen, gefolgt von einem Break, in der übergeordneten Schleife das Flag untersuchen -> Break...
Machmal ist ein goto schon in Ordnung. Man muss nur wissen wann.

Gruß
xaromz

Zacherl 24. Jul 2006 22:48

Re: goto-befehl in delphi?
 
Es geht auch mit verschachtelten Schleifen, sogar ohne ein extra Flag zu setzen:
Delphi-Quellcode:
var
  i, i2, i3: integer;
begin
  for i := 0 to 10 do
  begin
    for i2 := 0 to 20 do
    begin
      for i3 := 0 to 30 do
      begin
        if i3 = 15 then
          break;
      end;
      if (i3 = 15) and (i2 = 10) then
        break;
    end;
    if (i3 = 15) and (i2 = 10) and (i = 5) then
      break;
  end;
end;
Wieso denn nicht einfach die Zählervariable verwenden, die sowieso in(de)crementiert wird?

Florian

xaromz 24. Jul 2006 22:53

Re: goto-befehl in delphi?
 
Hallo,
Zitat:

Zitat von Florian Bernd
Es geht auch mit verschachtelten Schleifen, sogar ohne ein extra Flag zu setzen:
...

Und wo ist das übersichtlicher/weniger fehlerträchtig als 1(!) goto? Mit einem goto spare ich mir mehrere Abfragen und der Code wird wesentlich übersichtlicher. Nur weil einem jemand mal erzählt hat, dass etwas schlecht ist, muss man es noch lange nicht glauben, ohne es zu hinterfragen.

Manchmal zweifle ich echt an der Menschheit :? .

Gruß
xaromz

Oxmyx 24. Jul 2006 22:54

Re: goto-befehl in delphi?
 
Zitat:

Zitat von Florian Bernd
Es geht auch mit verschachtelten Schleifen, sogar ohne ein extra Flag zu setzen:
[...]

Wieso denn nicht einfach die Zählervariable verwenden, die sowieso in(de)crementiert wird?

Florian

Na das ist ja mal übersichtlich, besonders wenn die Bedingung komplizierter formuliert ist. ;)
Und da willst du mir erzählen, dass das Goto-Konstrukt unübersichtlich wäre?

mkinzler 24. Jul 2006 22:54

Re: goto-befehl in delphi?
 
Man könnte auch exit nehmen.

3_of_8 24. Jul 2006 22:55

Re: goto-befehl in delphi?
 
Das springt aus der ganzen Subroutine raus, was in vielen Fällen nicht erwünscht ist.

xaromz 24. Jul 2006 22:56

Re: goto-befehl in delphi?
 
Hallo,
Zitat:

Zitat von mkinzler
Man könnte auch exit nehmen.

damit springt man aber komplett aus der Routine. Das ist nicht immer gewünscht.

Gruß
xaromz

Zacherl 24. Jul 2006 22:59

Re: goto-befehl in delphi?
 
Zitat:

Zitat von xaromz
Hallo,
Zitat:

Zitat von Florian Bernd
Es geht auch mit verschachtelten Schleifen, sogar ohne ein extra Flag zu setzen:
...

Und wo ist das übersichtlicher/weniger fehlerträchtig als 1(!) goto? Mit einem goto spare ich mir mehrere Abfragen und der Code wird wesentlich übersichtlicher. Nur weil einem jemand mal erzählt hat, dass etwas schlecht ist, muss man es noch lange nicht glauben, ohne es zu hinterfragen.

Tue ich nicht! Ich hatte auch nie gesagt, dass meine Variante besser ist :mrgreen: Nur wenn jemand sagt: "das ist nicht möglich ohne extra Flag" ... wieso ihm nicht zeigen, dass es doch möglich ist?

Zitat:

Zitat von Oxmyx
Und da willst du mir erzählen, dass das Goto-Konstrukt unübersichtlich wäre?

Auch dies habe ich nie behauptet.

Florian


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr.
Seite 2 von 10     12 34     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