Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [Quiz] wann darf auf ein Semikolon ein ELSE folgen? (https://www.delphipraxis.net/184517-%5Bquiz%5D-wann-darf-auf-ein-semikolon-ein-else-folgen.html)

mjustin 1. Apr 2015 16:10

AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1295820)
"Bei speziell A: Tue dies. Bei speziell B: Tue das. ANSONSTEN tue das".

Durch Nanaki's Codebeispiel fühlte ich mich einen Augenblick in meinem abweichenden Stil unterstützt aber im Docwiki wird bei case und except jeweils das else in gleicher Weise eingerückt, das kann kein Zufall sein :)[/QUOTE]

Zitat:

Zitat von Der schöne Günther (Beitrag 1295820)
Außerdem: Du drückst dich. Wo ist mein Preis?

Oh, stimmt, den hatte ich ganz vergessen :oops:

<promotion>Ich vergebe gerne eine kostenlose Single Developer Lizenz mit Sourcecode meines Web Frameworks (Habari Web Components)</promotion>

Der schöne Günther 1. Apr 2015 16:16

AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
 
Also haben wir jetzt beide Fälle abgeschlossen oder gibt es noch einen dritten?

Und: Wann kommt das nächste Rätsel? Mir hat das Spaß gemacht.

Neutral General 1. Apr 2015 16:56

AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1295820)
Zitat:

Zitat von mjustin (Beitrag 1295769)
Ja, allerdings würde ich persönlich die Einrückung anders als in der Delphi Dokumentation setzen

Ich verstehe deine Motivation dafür nicht. Das Delphi-Doku-Beispiel ist doch super-übersichtlich und zeigt glasklar ein "Bei speziell A: Tue dies. Bei speziell B: Tue das. ANSONSTEN tue das".

Auch das Syntax-Highlighting beim cnPack (Castalia wahrscheinlich auch) färbt es nach dieser Logik ein.

Naja ganz einfach: In der Delphi Doku sieht es so aus als würde das else zum except gehören obwohl es (in meinen Augen) ein else zu den on-do Blöcken ist und daher auch auf diese Ebene gehört und nicht auf die Ebene des except.

Popov 1. Apr 2015 16:59

AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
 
Zitat:

Zitat von mjustin (Beitrag 1295827)
aber im Docwiki wird bei case und except jeweils das else in gleicher Weise eingerückt, das kann kein Zufall sein :)

Wenn dem so ist, dann ist es falsch. Else wird niemals eingerückt, da es z. B. bei der If-Anweisung bei Else um ein Teil der
Delphi-Quellcode:
if...then...else
Anweisung handelt. Else ist keine Unteranweisung, womit das mit Else so aussieht:
Delphi-Quellcode:
if...then
  Anweisung1
else
  Anweisung2;
Es sieht niemals so aus:
Delphi-Quellcode:
if...then
  Anweisung1
  else
  Anweisung2;
oder so:
Delphi-Quellcode:
if...then
  Anweisung1
    else
  Anweisung2;
Mit Begin- und End-Block sieht es so aus:
Delphi-Quellcode:
if...then
begin
  Anweisung1;
  Anweisung2;
end
else
begin
  Anweisung3;
  Anweisung4;
end
und nicht so:
Delphi-Quellcode:
if...then
begin
  Anweisung1;
  Anweisung2;
end
  else
begin
  Anweisung3;
  Anweisung4;
end;
oder so:
Delphi-Quellcode:
if...then
  begin
    Anweisung1;
    Anweisung2;
  end
else
  begin
    Anweisung3;
    Anweisung4;
  end;
Selbst bei Else-If bleibt alles gleich eingerückt:
Delphi-Quellcode:
if...then
begin
  Anweisung1;
  Anweisung2;
end
else if... then
begin
  Anweisung3;
  Anweisung4;
end;
Else wird niemals eingerückt, weil es Teil er gleichen Anweisung ist. Wer es anders macht, macht es weil er es für schöner hält, nicht weil es richtig ist.

Popov 1. Apr 2015 17:04

AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
 
Zitat:

Zitat von Neutral General (Beitrag 1295843)
Naja ganz einfach: In der Delphi Doku sieht es so aus als würde das else zum except gehören...

Tut es auch:
Delphi-Quellcode:
begin
   try
      WriteLn( 'Hallo Welt'.ToInteger() );
   except
     // eine Folge von Exception-Behandlungsroutinen, optional mit nachfolgendem else
     on EConvertError do
       WriteLn('Ein zahlenloser Tag');
   else
     WriteLn('Das Programm ist fehlerhaft. Tauschen sie es um.');
   end;
end.

mjustin 1. Apr 2015 17:04

AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
 
Zitat:

Zitat von Popov (Beitrag 1295844)
Zitat:

Zitat von mjustin (Beitrag 1295827)
aber im Docwiki wird bei case und except jeweils das else in gleicher Weise eingerückt, das kann kein Zufall sein :)

Else wird niemals eingerückt

Mit "in der gleichen Weise" wollte ich sagen, dass else konsistent - bei case, und bei except - in gleicher Weise nicht eingerückt wird. Also so wie in den richtigen Beispielen deines Beitrags.

Popov 1. Apr 2015 17:06

AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
 
Ok.

mjustin 1. Apr 2015 17:13

AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
 
Zitat:

Zitat von Popov (Beitrag 1295846)
Zitat:

Zitat von Neutral General (Beitrag 1295843)
Naja ganz einfach: In der Delphi Doku sieht es so aus als würde das else zum except gehören...

Tut es auch:
Delphi-Quellcode:
begin
   try
      WriteLn( 'Hallo Welt'.ToInteger() );
   except
     // eine Folge von Exception-Behandlungsroutinen, optional mit nachfolgendem else
     on EConvertError do
       WriteLn('Ein zahlenloser Tag');
   else
     WriteLn('Das Programm ist fehlerhaft. Tauschen sie es um.');
   end;
end.

Mein Bauchgefühl sagt mir, dass das else hier eingerückt sein sollte. Wird es so wie hier auf die gleiche Ebene wie das except gesetzt, wirkt es, aus als ob nach ihm der Codezweig für den Fall "keine Exception aufgetreten" beginnt. Aber zum Glück gibt es Style Guides :)

Popov 1. Apr 2015 17:22

AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
 
Natürlich wird Else bei Try-Except nur dann eingesetzt wenn auch On..Do eingesetzt wird. Trotzdem bildet es mit Try und Except die Einrückung. Es heißt ja auch nicht:
Delphi-Quellcode:
   try
      WriteLn( 'Hallo Welt'.ToInteger() );
   except
     // eine Folge von Exception-Behandlungsroutinen, optional mit nachfolgendem else
     on EConvertError do
       WriteLn('Ein zahlenloser Tag')
     else
       WriteLn('Das Programm ist fehlerhaft. Tauschen sie es um.');
   end;
In dem Fall gäbe es vor Else kein Semikolon.

On ist keine Abfrage, braucht also auch keine Alternative. Else kommt nur ins Spiel wenn kein keine der Exceptions gegriffen hat.

BadenPower 1. Apr 2015 17:26

AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
 
Zitat:

Zitat von Popov (Beitrag 1295846)
Zitat:

Zitat von Neutral General (Beitrag 1295843)
Naja ganz einfach: In der Delphi Doku sieht es so aus als würde das else zum except gehören...

Tut es auch:

Ne, tut es nicht.

Das ELSE ist dem EXCEPT untergeordnet, denn es wird ja NICHT aufgerufen, wenn keine Exception stattfindet, sondern nur wenn wir uns bereits im Exception-Block befinden und im Exception-Block keine der On-Bedingungen zutrifft.

Also gehört das ELSE zu den On-Bedingungen und müsste daher eingerückt sein.


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

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