Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - And und Or Verknüpfung


Zuckerrübe - Sa 28.03.09 11:56
Titel: And und Or Verknüpfung
Hey,

wie kann ich in einer if Function mehrere Bedingungen mit AND und OR mit einander Verknüpfen ??

z.B.


Delphi-Quelltext
1:
2:
if (a=2and (b>1then
  c:= 50;


schlechtes Beispiel aber vielleicht versteht einer was ich mein. ;-)


GTA-Place - Sa 28.03.09 11:59

Äh, genau so, wie du es gerade gepostet hast :lol:


Hidden - Sa 28.03.09 12:01

Hi :)

Eigentlich sagt dein Beispiel ja schon alles :gruebel:

Mal ein etwas komplexeres:
1:
if a and not ((b or c) and (d or e))                    


<=>Wenn a wahr ist, aber gleichzeitig b, c, d und e falsch sind.

mfG,


Zuckerrübe - Sa 28.03.09 12:19

Danke für eure schnellen Antworten, aber dein Beispiel ist echt komplex ^^

also ich habe folgendes Problem:

ich will schaun ob in 3 panels das gleiche drin steht und wenn ja dann soll er in ein label was einfügen.


Delphi-Quelltext
1:
2:
if (Panel1.Caption) and (Panel2.Caption) and (Panel3.Caption) = 'X' then
  label1.Caption:= 'was weis ich ^^';


so habe ich mir das vorgestellt, nur will mir das der compiler nicht abnehmen.

mfg


Ulixes - Sa 28.03.09 12:23

Hallo,

Versuch es mal so:

Delphi-Quelltext
1:
2:
if (Panel1.Caption = 'X'and (Panel2.Caption='X'and (Panel3.Caption='X'then
  label1.Caption:= 'was weis ich ^^';


Weiß aber nicht, ob das sauber ist...ich mach es manchmal so

Mfg

EDIT: Sorry...gerade ein Denkfehler...du musst zu jeder deiner Überprüfungen eine Bedingung schreiben.
Das war dein Fehler.


Hidden - Sa 28.03.09 12:27

Wundert mich, dass du da keine Fehlermeldung bekommst :? "incompatible types: boolean and string".


Eigentlich müsste das so aussehen:
1:
2:
if (Panel1.Caption = Panel2.Caption) and (Panel2.Caption = Panel3.Caption) then
  ..


Die logischen Operatoren and und or sind übrigens von den umgangssprachlichen verschieden. Wir verwenden "a and b" nämlich auch, um Elemente zu Mengen zusammenzufügen([a] and [b] = [a, b]).


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
And: And(a, b: Boolean): Boolean.
    tr fl
----------
tr- tr fl
fl- fl fl

Or: Or(a, b: Boolean): Boolean.
    tr fl
----------
tr- tr tr
fl- tr fl

->Or ist also die Negation der Spiegelung der Wahrheitstabelle von And an der Mittelachse
  ->Or(a, b) = not(And(not(a), not(b))) = not(not a and not b),

mit not(z: Boolean): Boolean.
z   not(z)
----------
tr-  fl
fl-  tr


mfG,


platzwart - Sa 28.03.09 12:27


Delphi-Quelltext
1:
2:
if (Panel1.Caption = 'X'and (Panel2.Caption = 'X'and (Panel3.Caption = 'X'then
   label1.Caption:= 'was weis ich ^^';


GTA-Place - Sa 28.03.09 12:29

3x Orange unter mir, aber ich korrigiere mal: Du musst das jeweils extra schreiben:


Delphi-Quelltext
1:
if (Panel1.Caption = 'X'AND (Panel2.Caption = 'X'AND ...                    

bzw.:


Delphi-Quelltext
1:
if (Panel1.Caption = 'X'AND (Panel2.Caption = Panel1.Caption) AND ...                    

Hier bieten sich dann Variablen an:


Delphi-Quelltext
1:
2:
3:
4:
5:
P1 := Panel1.Caption;
P2 := Panel2.Caption 
P3 := Panel3.Caption;

if (P1 = 'X'AND (P2 = P1) AND (P3 = P1) then