Verknüpfen von Bedingungen

HarryXVI

Erfahrenes Mitglied
wenn ich bei einer if-Anweisung zwei Sachen verknüpfen will

Code:
if ImAuto1.Left = 272 and ImAmpelRot.Visible = true 
  then TiAutos.Enabled := false;

erscheint in Delphi 7diese Fehlermeldung: "Operator (=) ist auf diesen Operandentyp nicht anwendbar."
Wenn ich die beiden Bedingung aber einzeln schreibe, klappt's
Was ist los?
.
 
Hi,

wenn du einen booleschen Ausdruck in eine if-Anweisung einsetzt, musst du da nicht mehr auf true oder false vergleichen. Der Ausdruck alleine reicht, gibt ja schon true oder false zurück. ;)

Ich bin mir nicht sicher, ob es tatsächlich daran liegt, aber ich nehme mal an, dass der Compiler die Zeile falsch interpretiert. Oder zumindest anders als du sie meintest:

Code:
if (ImAuto1.Left = 272 and ImAmpelRot.Visible) = true then
statt
Code:
if (ImAuto1.Left = 272) and (ImAmpelRot.Visible = true) then

Deswegen würde ich dir vorschlagen, das "= true" einfach mal wegzulassen. Evtl. hat die Konjunktion da eine höhere Bindungspriorität und das "= true" am Ende wird als Anhängsel an den gesamten Ausdruck erkannt. Aber wie gesagt: Sicher bin ich mir da nicht, ist nur eine Vermutung.

Grüße, D.
 
Ich habe auch schon mit true und false seltsame Fehlermeldungen bei meinen Bedingungen erlebt, vor allem bei Verknüpfungen mit AND und OR. Seit ich mir angewöhnt habe, jede einzelne Bedingungen in Klammern zu schreiben und auch die entsprechenden Bedingungen miteinander zu Klammern (z.B. if ( ( Bedingung 1 AND Bedingung 2) OR Bedingung 3) usw.) habe ich keine Probleme mehr gehabt.
 
Zurück