Einzelnen Beitrag anzeigen

IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: case und if-Abfragen Problem: code wird nicht abgearbeit

  Alt 10. Jan 2005, 17:53
Was redet ihr da??? (dizzy meint übrigens sinngemäß das richtige)

Die then-Anweisung
Delphi-Quellcode:
case KI_LVL of
      1: if (Ball.Top) or (Ball2.Top) <= KI_LVL1 then ...
wurde in Abhängigkeit der Werte von Ball.Top, Ball2.Top und KI_LVL1 ausgeführt, oder nicht. Die beiden Ball-Werte wurden einfach ODER-verknüpft. Das ist rechnerisch (und delphi-technisch) möglich. Es wurde somit einfach nur eine Zahl mit einer anderen verglichen.


Bei
Ball.Top = 2
Ball2.Top = 4
KI_LVL1 = 5
würde then nicht ausgeführt, weil 2 OR 4 gleich 6 ist --> 6 größer 5 ==> nicht ausführen.

Das war auch der Fehler, dass wenn sogar beide Ball-Werte (oder auch nur einer) eigentlich unter dem Vergleichswert KI_LVL1 lagen, die Anweisung trotzdem nicht immer ausgeführt werden konnte, weil das Ergebnis der ODER-Verknüpfung über dem Vergleichswert lag.

Dass Delphi sich hier nicht beschwert, ist völlig korrekt. Es war legaler Code, nur eben für den angedachten Zweck logisch falsch.
  Mit Zitat antworten Zitat