Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - If Else Abfrage


Papperlapapp - Do 04.12.08 13:10
Titel: If Else Abfrage
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?


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

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:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
if xy then
begin
  MachWas;
  MachNochWas;
end
else
  MachWas;


Klabautermann - 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 - 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 - Fr 05.12.08 10:08

vielen Dank