![]() |
AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
Zu welcher dieser On-Bedingungen würde das Else gehören? Beispiel aus:
![]()
Delphi-Quellcode:
Hier ein anderes Beispiel:
program FunWithDelphi;
{$APPTYPE CONSOLE} uses Controls, SysUtils; begin try raise TMouse.Create; except on E:Exception do begin Writeln(E.Classname, ': E is Exception'); end; on E:TObject do begin Writeln(E.Classname, ': E is TObject'); end; on E:TMouse do begin Writeln(E.Classname, ': E is TMouse'); end; end; ReadLn; end.
Delphi-Quellcode:
Division durch Null wird im Except-Block ausgeführt. Fallen sonstige Fehler an, werden die in Else abgearbeitet.
var
t: TDateTime; a: Integer; begin try t := StrToDate('40.01.2015'); ShowMessage(DateToStr(t)); a := 5; ShowMessage(IntToStr(10 div (a-5))); except on E:EDivByZero do ShowMessage('Division durch Null.'); else ShowMessage('Sonstige Fehler.'); end; end; Übrigens, wusste ich bisher auch nicht, aber On..funktioniert im Except-Block nur wenn sonst keine Anweisungen in dem Block vorhanden sind. Das klappt also nicht:
Delphi-Quellcode:
Geht nicht. Wird gar nicht erst kompiliert.
var
t: TDateTime; a: Integer; begin try t := StrToDate('40.01.2015'); ShowMessage(DateToStr(t)); a := 5; ShowMessage(IntToStr(10 div (a-5))); except on E:EDivByZero do ShowMessage('Division durch Null.'); ShowMessage('Sonstige Fehler.'); end; end; |
AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
Viele ON's sind wie ein if-then-else-if-then-else und das letzte ELSE ist das besagte ELSE.
PS: ELSE gibt es dort nur, wenn vorher ein ON steht. Jupp, entweder ON oder nicht ... gemischt geht nicht, aber da
Delphi-Quellcode:
einem
on e: irgendwas do begin ... end
Delphi-Quellcode:
entspricht, kann man das auch selber machen.
if ExceptObject is irgendwas then begin var E := ExceptObject as irgendwas; ... end;
Ich schiebe ELSE "immer" auf Höhe vom Beginn des öffnenden Befehls (IF), bzw. der gleichwertigen Geschwister (im CASE und EXCEPT). Genauso wie beim END, wobei ich hier END-ELSE-BEGIN in eine Zeile schiebe (BEGIN hinter den Befehl) Aber jedem das Seine. Es gibt nur Einwas, wo das alles nicht hilft und man immer eine Ausnahme machen muß .... Beim fehlenden End in den varianten Teilen des Records. :wall: Dieses End sollte man endlich mal reparieren ... man kann das nicht ordentlich verschachteln und vorallem nix dahinter legen, wie in jeder anderen Sprache auch. |
AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
Zitat:
Also so:
Delphi-Quellcode:
var
t: TDateTime; a: Integer; begin try t := StrToDate('40.01.2015'); ShowMessage(DateToStr(t)); a := 5; ShowMessage(IntToStr(10 div (a-5))); except on E:EDivByZero do ShowMessage('Division durch Null.'); else ShowMessage('Sonstige Fehler.'); end; end; |
AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
Grundregel bei Pascal: bei Semikolon ist eine Anweisung zu ende. Da folgt nichts mehr. Da ist Schluss.
Delphi-Quellcode:
Wie kann also nach dem Ende noch etwas folgen?
on E:EDivByZero do
ShowMessage('Division durch Null.'); Außerdem, wieso funktioniert das nicht?
Delphi-Quellcode:
Wenn Else zu On gehört, dann müsste es dem Except-Block egal sein ob es vorher noch ein Hallo sagt.
try
... except ShowMessage('Hallo.'); on E:EDivByZero do ShowMessage('Division durch Null.'); else ShowMessage('Sonstige Fehler.'); end; |
AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
Zitat:
|
AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
Das wurde doch schon gesagt?
Von Try-Except gibt es quasi zwei Varianten: * mit den ON-DO-ELSE-Bedingungen * und ohne Ja, beim ; ist ein "Befehl" zuende ... beim CASE und EXCEPT-ON ist EXCEPT-END und CASE-OF-END nur der Container und das da drinnen sind die enthaltenen Befehle/Bedingungen, welche "jeweils" mit ; enden. Drum wird ON und ELSE auch eingerückt. :angle2: |
AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
Wie kann man denn ernsthaft der Meinung sein, dass das
Delphi-Quellcode:
auf die gleiche Stufe wie das
else
Delphi-Quellcode:
gehört? :shock: Das ist für mich völlig absurd. Oder ist das ein Aprilscherz?
except
Auf jeden Fall kann man da bestimmt einen wunderbaren Flamewar drüber entfachen. |
AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
Zitat:
|
AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
Zitat:
Delphi-Quellcode:
und
try..except..end;
Delphi-Quellcode:
nicht das Gleiche sind und beim Zweiten nur Ons im Except-Block akzeptiert werden?
try..except..else..end;
Auf der anderen Seite - ich denke so wichtig ist das nun auch wieder nicht. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?
Die haben es alle einfach untereinander und von jemandem kopiert, der es falsch machte. :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz