Beispiel: Nimm ein Rechteck, teile es senkrecht in der Mitte, nenne den linken Teil B, den rechten A. Dann haben A und B eine Seite gemeinsam und damit einen nicht-leeren Durchschnitt. Es ist B.Right=A.Left, also gerade nicht B.Right < A.Left und damit der gesamte Ausdruck mit and falsch und Deine Funktion liefert ein falsches Ergebnis.
Die Defintion von
TRect
besagt aber gerade, daß die so geteilten Rechtecke eben nicht eine Seite gemeinsam haben. Die Trennlinie beschreibt zwar die rechte Kante des linken Rechtecks, gehört aber per Definition nicht dazu.
Anders ausgedrückt würde eine Schleife über die X-Werte eines Rechtecks so lauten:
for I := A.Left to A.Right - 1 do
Wie schon erwähnt, ist dies in späteren Delphi-Versionen gefixt.