Autor Beitrag
Papperlapapp
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Do 04.12.08 13:10 
Hallo,

wie verhält es sich bei IF THEN ELSE abfragen und dessen kompaktheit?

also ich meine folgendes, wenn ich nach dem If...Then kein Begin habe, dann wird nur die direkt nachfolgende Anweisung bei true ausgeführt, alles nachfolgende wird in jedem Fall ausgeführt. will ich mehrere Sachen ausführen, muss ich das in begin..end einbauen, oder? selbiges dann bei If..Then..Else If.

Im Beispiel sollte die Lösung also a=1 sein, oder?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
a:=2;

If 1>2 Then a:=0;
Else If 2>1 Then a:=4;
a:=a*2;

If 1>2 Then a:=0;
Else a:=a/8;
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 04.12.08 13:15 
Richtig, von den Compilerfehlern und -warnungen mal abgesehen, und wenn du es nicht so komisch schreiben würdest, würde man das auch gleich sehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
a := 2;

if 1 > 2 then 
  a := 0
else if 2 > 1 then 
  a := 4;

a := a * 2;

if 1 > 2 then
  a := 0
else 
  a := a / 8;
Meldungen kommen natürlich, dass Bedingungen nie / immer erfüllt werden, aber darum gehts ja nicht. Bei dir war auch noch ein ; vor dem else, das darf da nicht hin ;-). Bei begin..end entsprechend wäre die Einrückung:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
if xy then
begin
  MachWas;
  MachNochWas;
end
else
  MachWas;


Zuletzt bearbeitet von jaenicke am Do 04.12.08 13:16, insgesamt 1-mal bearbeitet
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 04.12.08 13:15 
Hi,

ja deine Aussagen sind richtig, wobei du aber vor dem else kein Semikolon nutzen darfst. Daher wird sich dein Delphi beschweren, wenn du versuchst deinen Code zu Kompilieren.

Gruß
Klabautermann
baka0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Do 04.12.08 18:09 
Und zwar weil für ihn die gesamte if-Abfrage an dem Semikolon beendet ist, daher wird kein else zugelassen.
Papperlapapp Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Fr 05.12.08 10:08 
vielen Dank