Korrekt wäre es m.E. zum Beispiel so
Delphi-Quellcode:
FUNCTION MyIntersectRect(const A,B:TRect):Boolean;
begin
Result:=(A.Left<B.Right) and (A.Right>B.Left) and (A.Top<B.Bottom) and (A.Bottom>B.Top);
end;
Das kann nicht richtig sein. Wenn z.B.
(A.Left=B.Right) ist, schneiden sich die Rechtecke.
Bei Dir wird
false geliefert: Irgendwo müssen auch
<= bzw
>= im Vergleich auftauchen. Im Original wird das durch das
not erschlagen.
Nein, gerade das ist ja der Fehler in den Funktionen.
Im anhängenden Bild ist
A=Rect(35,5,65,35)
B=Rect(5,5,35,35)
A.Left = B.Right
Und wo überschneiden sich die Rechtecke?
Bedenke: B.Right liegt außerhalb der Fläche des Rechtecks B.
So ist nun einmal TRect definiert.
Left und Top liegen innerhalb der Fläche.
Right und Bottom liegen außerhalb der Fläche.