Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Procedure beenden (https://www.delphipraxis.net/134313-procedure-beenden.html)

himitsu 19. Mai 2009 20:32

Re: Procedure beenden
 
selbst mit IFs wäre kein EXIT nötig, wenn man das ELSE verwenden würde :angel:

Helmi 19. Mai 2009 20:38

Re: Procedure beenden
 
auch bei "case" wäre kein exit notwendig:

Delphi-Quellcode:
case pos of
  1:begin
      button1.Top := 120;
      button1.Left := 8;
      pos := 2;
    end;
  2:begin
      //usw..

oki 19. Mai 2009 20:41

Re: Procedure beenden
 
Zitat:

Zitat von Fussball-Robby
Zitat:

Zitat von Forlan
Delphi-Quellcode:
if pos = 1 then
begin
  button1.Top := 120;
  button1.Left := 8;
  pos := 2;
  exit;
end;
so sollte es auch besser aussehen...[/Edit]

Und noch besser:
Delphi-Quellcode:
case pos of
  1:begin
      button1.Top := 120;
      button1.Left := 8;
      pos := 2;
      exit;
    end;
  2:begin
      //usw..
(Wie Dax bereits sagte)

Das Exit erscheint mir aber in beiden Varianten recht überflüssig. Einfach das Pferd von hinten aufzäumen.
Delphi-Quellcode:
case Pos of
  4 : begin
      ...
  end;
  ...
  1 : begin
      ...
  end;
  5 : begin
      ...
  end;
end;
Gruß oki

Fussball-Robby 19. Mai 2009 20:55

Re: Procedure beenden
 
Zitat:

Zitat von Helmi
auch bei "case" wäre kein exit notwendig:

Zitat:

Zitat von oki
Das Exit erscheint mir aber in beiden Varianten recht überflüssig.

War nur ein Copy&Paste-Fehler. Es ist klar, dass das Exit überflüssig ist, denn beim case-of-statement wird in jedem Fall nur ein Codeblock angesprungen.

himitsu 19. Mai 2009 21:04

Re: Procedure beenden
 
wozu denn das weiterzählen selber übernehmen?

Delphi-Quellcode:
case Pos of
  0 : begin
    button1.Top := 120;
    button1.Left := 8;
  end;
  1 : begin
      ...
  end;
  ...
  4 : begin
      ...
  end;
end;
Pos := (Pos + 1) mod 5;




procedure TForm1.FormCreate(Sender: TObject);
begin
  pos := 0;
end;
oder in "länger" (für 1 bis 5)
Delphi-Quellcode:
case Pos of
  ..
end;
Inc(Pos);
if Pos > 5 then Pos := 1;
oder
Delphi-Quellcode:
case Pos of
  ..
end;
if Pos < 4 then Inc(Pos)
else Pos := 1;
oder
oder
oder
...

oki 19. Mai 2009 21:09

Re: Procedure beenden
 
Zitat:

Zitat von Fussball-Robby
Zitat:

Zitat von Helmi
auch bei "case" wäre kein exit notwendig:

Zitat:

Zitat von oki
Das Exit erscheint mir aber in beiden Varianten recht überflüssig.

War nur ein Copy&Paste-Fehler. Es ist klar, dass das Exit überflüssig ist, denn beim case-of-statement wird in jedem Fall nur ein Codeblock angesprungen.

Jetzt werd ich doch unsicher. Wenn ich Pos in der Case-Anweisung auf einen nachfolgenden Wert korrigiere :gruebel:

Nee, klar, bei case ist das unerheblich. Nur bei den if-Anweisungen würde es einem ohne Exit auf die Füße fallen, außer man macht es so, wie es himitzu vorgeschlagen hat.

Gruß oki

omata 19. Mai 2009 22:29

Re: Procedure beenden
 
Exit ist unnötig.

oki 20. Mai 2009 06:16

Re: Procedure beenden
 
Zitat:

Zitat von omata
Exit ist unnötig.

mit den if-Anweisungen aber nur wie himitsi es beschrieben hat oder bei Nutzung der else-Zweige.

Gruß oki

uligerhardt 20. Mai 2009 09:29

Re: Procedure beenden
 
Zitat:

Zitat von SirThornberry
hmm, ein case bei 5 Werten ist grenzwertig. Lohnt sich das in Sachen geschwindigkeit da wirklich schon? Denn ein Case ist nicht immer schneller.

Bei der Wahl case/if kommt es doch (im Normalfall) nicht auf die Geschwindigkeit an. Der resultierende Code soll lesbar und verständlich sein. Und da ist ein case meist besser als eine if-else-Kaskade.

vip11 20. Mai 2009 14:00

Re: Procedure beenden
 
Also ich hab mich jetzt für die case variante entschieden da es von der geschwindigkeit ausreicht und auch schön übersichtlich ist.
Eigentlich war das Prog nur als kleine übung gedacht, da sieht man mal wieder wie schnell man sowas verlernt :oops:
aber läuft jetzt alles :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr.
Seite 2 von 2     12   

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