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?
Thema durchsuchen
Ansicht
Themen-Optionen

[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 1 von 2  1 2      
Nanaki

Registriert seit: 23. Mär 2015
5 Beiträge
 
Delphi XE7 Professional
 
#1

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

  Alt 1. Apr 2015, 10:32
Delphi-Quellcode:
case eingabe of
 1: ausgabe := 'Sie haben 1 eingegeben';
 2: ausgabe := 'Sie haben 2 eingegeben';
 3: ausgabe := 'Sie haben 3 eingegeben';
 else ausgabe := 'Sie haben nicht 1, 2 oder 3 eingegeben';
end;


Hier

Edit: Ohhh zu spät
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#2

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

  Alt 1. Apr 2015, 10:40
Danke für die Antworten soweit! Es gibt allerdings noch ein weiteres Konstrukt bei dem nach einem Semikolon ein else folgen kann. Wer kennt es?
Michael Justin
  Mit Zitat antworten Zitat
Der schöne Günther

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

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

  Alt 1. Apr 2015, 10:44
try..except..else?

Delphi-Quellcode:
begin
   try
      WriteLn( 'Hallo Welt'.ToInteger() );
   except
      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.005 Beiträge
 
Delphi 2009 Professional
 
#4

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

  Alt 1. Apr 2015, 11:37
Ja, allerdings würde ich persönlich die Einrückung anders als in der Delphi Dokumentation setzen. In der Delphi Dokumentation wird das else auf die Ebene des except gesetzt:
Delphi-Quellcode:
try
  ...
except
  on EZeroDivide do HandleZeroDivide;
  on EOverflow do HandleOverflow;
  on EMathError do HandleMathError;
else
  HandleAllOthers;
end;
Dagegen würde ich diese Einrückung bevorzugen:
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.
http://docwiki.embarcadero.com/RADSt.../de/Exceptions
Zitat:
ExceptionBlock ist entweder
eine weitere Anweisungsfolge oder
eine Folge von Exception-Behandlungsroutinen, optional mit nachfolgendem else Anweisungsliste
Michael Justin

Geändert von mjustin ( 1. Apr 2015 um 11:40 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

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

  Alt 1. Apr 2015, 12:42
Gab es nicht noch irgendeinen Fall mit Verschachtelung?

Delphi-Quellcode:
  if a then
    if b then
      foo;
  else
    bar;
Das scheint es aber nicht zu sein... zumindest nicht unter FreePascal.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.199 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 1. Apr 2015, 13:25
Gab es nicht noch irgendeinen Fall mit Verschachtelung?
Ich glaub fast ja njö. Das Semikolon gehört ja zum inneren IF und das äußere IF wäre noch nicht beendet,
aber eigentlich sollte ; alles beenden, denn sonst müsste man ja bei if ... then ... else if ... then ... else if ... then ... else ...;;;

Aber grundsätzlich sollte ELSE nur beim CASE auf ; folgen, denn dort beendet das ; den jeweiligen Case-Block und ELSE folgt auf das ganze CASE-OF.
Und Try-Except ist quasi ein CASE.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Der schöne Günther

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

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

  Alt 1. Apr 2015, 15:40
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.


Außerdem: Du drückst dich. Wo ist mein Preis?
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#8

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

  Alt 1. Apr 2015, 16: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.114 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

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

  Alt 1. Apr 2015, 16: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
Popov
(Gast)

n/a Beiträge
 
#10

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

  Alt 1. Apr 2015, 16: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
Antwort Antwort
Seite 1 von 2  1 2      


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 03:19 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