Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zu if else (https://www.delphipraxis.net/28587-frage-zu-if-else.html)

ferby 26. Aug 2004 17:06


Frage zu if else
 
Hallo,

wenn ich follgenden Quelltext habe:

Delphi-Quellcode:
if a<0 then if b>8 then
begin
  mach irgend was
end
else y:=1;
Auf was bezieht sich jetzt das else? Auf a<0 oder b>8?
Wie muss ich es machen damit es anders rum wäre?

Ich hoffe ihr versteht mein Problem,
Ferby

Tubos 26. Aug 2004 17:11

Re: Frage zu if else
 
Das else bezieht sich auf das zweite if weil if-then-else zusammengehört.

Wenn du es andersrum haben möchtest:
Delphi-Quellcode:
if b>8 then if a<0 then
begin
  mach irgend was
end
else y:=1;
einfach umdrehen :zwinker:

Andere Möglichkeit:
Delphi-Quellcode:
if (a<0) and (b>8) then
begin
 mach irgend was
end
else y:=1;
Genau dasselbe, aber viel besser lesbar :)

Tubos

Luckie 26. Aug 2004 17:11

Re: Frage zu if else
 
Zitat:

Zitat von ferby
Auf was bezieht sich jetzt das else? Auf a<0 oder b>8?

Schreib das mal ordentlich hin, dann siehst du auch, was passiert:
Delphi-Quellcode:
if a < 0 then
  if b > 8 then
  begin
    mach irgend was
  end
  else
    y:=1;

S2B 26. Aug 2004 17:12

Re: Frage zu if else
 
Delphi-Quellcode:
if a<0 then
  if b>8 then
  begin
    mach irgend was
  end
  else y:=1;
Da bezieht sich das else, wie du hier besser siehst, auf die 2. if-Abfrage!

Delphi-Quellcode:
if a<0 then
  if b>8 then
  begin
    mach irgend was
  end;
else y:=1;
So bezieht sich das else auf die 1. if-Abfrage! :wink:

Edit: @Tubos: Deine 2. Möglichkeit stimmt nur, wenn sich das else auf beide Abfragen beziehen soll! :wink:

Luckie 26. Aug 2004 17:15

Re: Frage zu if else
 
Zitat:

Zitat von S2B

Delphi-Quellcode:
if a<0 then
  if b>8 then
  begin
    mach irgend was
  end;
else y:=1;
So bezieht sich das else auf die 1. if-Abfrage! :wink:

Sicher? Ich könnte schwören der Compiler meckert jetzt wegen dem Strichpunk vor dem else. :gruebel:

Pseudemys Nelsoni 26. Aug 2004 17:17

Re: Frage zu if else
 
ja, luckie hat recht... ";" vor else ist nicht erlaubt, und wenn das weg ist gehört der elseteil wieder zum 2ten if. ich würd einfach 2mal begin..end benutzen

ferby 26. Aug 2004 17:19

Re: Frage zu if else
 
Hallo,

Delphi-Quellcode:
if (a<0) and (b>8) then
begin
mach irgend was
end
else y:=1;

ist nicht das selbe!

denn wenn a oder b nicht zutreffen dann wird y 1.
Bei meiner Variante kann a nicht stimmen und trodzdem wird y nicht 1!
also ist es nicht dasselbe.

S2B 26. Aug 2004 17:19

Re: Frage zu if else
 
:wall: :wink:
Delphi-Quellcode:
if a<0 then
begin
  if b>8 then
  begin
    mach irgend was
  end;
end
else y:=1;
Besser so? :cyclops:

@ferby: s.o. :wink:

ferby 26. Aug 2004 17:20

Re: Frage zu if else
 
Hallo,

Ja, danke für die Hilfe,
ist ja gar nicht so unkomplex...

Pseudemys Nelsoni 26. Aug 2004 17:21

Re: Frage zu if else
 
Zitat:

Zitat von ferby
Hallo,

Delphi-Quellcode:
if (a<0) and (b>8) then
begin
mach irgend was
end
else y:=1;

ist nicht das selbe!

denn wenn a oder b nicht zutreffen dann wird y 1.
Bei meiner Variante kann a nicht stimmen und trodzdem wird y nicht 1!
also ist es nicht dasselbe.


müsste aber, denn es ist richtig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:03 Uhr.
Seite 1 von 2  1 2      

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