AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi [Quiz] wann darf auf ein Semikolon ein ELSE folgen?

[Quiz] wann darf auf ein Semikolon ein ELSE folgen?

Ein Thema von mjustin · begonnen am 1. Apr 2015 · letzter Beitrag vom 2. Apr 2015
Antwort Antwort
Seite 2 von 4     12 34   
mjustin

Registriert seit: 14. Apr 2008
3.003 Beiträge
 
Delphi 2009 Professional
 
#11

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

  Alt 1. Apr 2015, 17:10
"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]

Außerdem: Du drückst dich. Wo ist mein Preis?
Oh, stimmt, den hatte ich ganz vergessen

<promotion>Ich vergebe gerne eine kostenlose Single Developer Lizenz mit Sourcecode meines Web Frameworks (Habari Web Components)</promotion>
Michael Justin
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

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

  Alt 1. Apr 2015, 17:16
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.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#13

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

  Alt 1. Apr 2015, 17:56
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.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#14

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

  Alt 1. Apr 2015, 17:59
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 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.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#15

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

  Alt 1. Apr 2015, 18:04
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.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.003 Beiträge
 
Delphi 2009 Professional
 
#16

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

  Alt 1. Apr 2015, 18:04
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.
Michael Justin
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#17

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

  Alt 1. Apr 2015, 18:06
Ok.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.003 Beiträge
 
Delphi 2009 Professional
 
#18

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

  Alt 1. Apr 2015, 18:13
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
Michael Justin
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#19

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

  Alt 1. Apr 2015, 18:22
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.
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#20

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

  Alt 1. Apr 2015, 18:26
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.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr.
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