Vergleiche: ungleich vs nicht gleich
-
Hallo zusammen,
nach Verlassen eines Formulars werte ich ModalResult aus. Im Fall mrCancel trifft die Bedingung Fall A zu, Fall B nicht, warum? Ich hatte beides für gleichwertig gehalten.
Fall A:
if(Form1->ModalResult != mrOk)Fall B:
if(!Form1->ModalResult == mrOk)Gruß
Leo
-
Der operator! hat eine höhere Priorität hat als der operator==, daher werden die Ausdrücke unterschiedlich ausgewertet:
Form1->ModalResult != mrOk entspricht ((Form1->ModalResult) != (mrOk))und
!Form1->ModalResult == mrOk entspricht ((!Form1->ModalResult) == (mrOk)Im zweiten Beispiel wird also Form->ModalResult erst negiert und dann mit mrOk verglichen, was nicht der Negation des Vergleichs von Form->ModalResult und mrOk entspricht.
-
if(!Form1->ModalResult == mrOk)Kleiner Denkfehler: Du negierst nicht den Vergleich, sondern Form1->ModalResult
Du musst erst den Vergleich durchführen und dann erst negieren:
if(!(Form1->ModalResult == mrOk))[Edit] Seufzer, zu langsam...
-
Okay, besten Dank!
Leo