Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Auf welches IF (bei mehreren IFs) bezieht sich ein ELSE? (https://www.delphipraxis.net/199297-auf-welches-if-bei-mehreren-ifs-bezieht-sich-ein-else.html)

Alallart 12. Jan 2019 23:57

Auf welches IF (bei mehreren IFs) bezieht sich ein ELSE?
 
Gibt es da eine Regel oder ist das eine Einstellungssache? Ein Beispiel
Delphi-Quellcode:
var
  a: Integer;
begin
  Randomize;
  a := Random(3); //Ergibt eine Zahl zwischen 0 und 2

  if a > 0 then
    if a = 1 then
      ShowMessage('a ist 1')
    else
      ShowMessage('a ist 2');
end;
Wenn ich das teste, bezieht sich ELSE bei mir auf das zweite IF. Die Frage die ich mir stelle ist allerdings - ist das eine Einstellungssache oder bezieht sich ELSE immer auf das letzte IF? Kann man drauf vertrauen?

Schokohase 13. Jan 2019 00:04

AW: Auf welches IF (bei mehreren IFs) bezieht sich ein ELSE?
 
Ja, ist so, trotzdem würde ich da mit
Delphi-Quellcode:
begin ... end
arbeiten um das deutlicher hervorzuheben. Source ist nicht nur für den Compiler sondern auch für den Entwickler und die Kollegen.

p80286 13. Jan 2019 10:24

AW: Auf welches IF (bei mehreren IFs) bezieht sich ein ELSE?
 
Ein else bezieht sich auf das jeweils letzte If, das keinen else-Zweig besitzt.
Wenn man nicht selbs mit begin..end strukturiert.

Gruß
K-H

DP-Maintenance 13. Jan 2019 14:19

Dieses Thema wurde am "13. Jan 2019, 15:19 Uhr" von "Luckie" aus dem Forum "Programmieren allgemein" in das Forum "Object-Pascal / Delphi-Language" verschoben.

Redeemer 13. Jan 2019 15:43

AW: Auf welches IF (bei mehreren IFs) bezieht sich ein ELSE?
 
Nimm CnPack, klick auf der "else" und er zeigt dir das if.

Moombas 14. Jan 2019 07:06

AW: Auf welches IF (bei mehreren IFs) bezieht sich ein ELSE?
 
Tipp: Mache nach deinem If-Then ein begin-end, dann weisst du in der Regel wo das else auch zugehört. Ist aber auch ein wenig Geschmackssache aber ich finde das erleichtert vieles in der Lesbarkeit.
Delphi-Quellcode:
if a > 0 then
begin
   if a = 1 then
   begin
     ShowMessage('a ist 1');
   end else
   begin
     ShowMessage('a ist 2');
   end;
end;
Tipp2: Bei deinem Beispiel würde sich eine Case-Anweisung aus meiner Sicht besser eignen:
Delphi-Quellcode:
Case a of
       1 : ShowMessage('a ist 1');
       2 : ShowMessage('a ist 2');
//else                             //optional
//       ShowMessage('a ist ' + inttostr(a)); //optional
end;
Oder wenn es dir wirklich nur um die Ausgabe des Wertes geht:
Delphi-Quellcode:
if a > 0 then
begin
  ShowMessage('a ist ' + inttostr(a));
end;

mkinzler 14. Jan 2019 07:08

AW: Auf welches IF (bei mehreren IFs) bezieht sich ein ELSE?
 
Zitat:

if a > 0 then
begin
ShowMessage('a ist ' + a);
end;
Wird einen Fehler liefern

Delphi-Quellcode:
ShowMessage('a ist ', IntToStr(a));
oder mit Format().

Moombas 14. Jan 2019 07:10

AW: Auf welches IF (bei mehreren IFs) bezieht sich ein ELSE?
 
Habs schon bemerkt gehabt und korrigiert ;) SO ist das wenn man nur mal eben schnell was hin zimmert im Browser XD


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf