Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - if TRect = TRect then


NetSpider - Do 19.07.07 18:07
Titel: if TRect = TRect then
Hi,

hab ein Problem und weiss nicht weiter --> Delphi-Forum-Beitrag schreiben...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
function GetGrayed(aRec: TRect): TRect;
var m, n: TRect;
begin
Result := aRec;
if aRec = m then Result := n;
end;


Also, ich moechte diese Rects vergleichen, sind sie gleich wird er geaendert. Es geht darum verschiedene Images aus einem grossen Image zu laden (von jedem Objekt gibt es 2 Zustaende Normal und Grayed).
Mein Objekt ist jetzt Normal - sende ich dieses Rect an die Funktion, wuerde ich die Position des Grayed-Objekts erhalten. Leider funktioniert es nicht.

Folgende Compiler-Meldung:
[Pascal Error] GraphicConsts.pas(114): E2015 Operator not applicable to this operand type

Soll das heissen, dass ich keine Vergleiche von Rects machen kann?
Also, dann wird man wohl ne eigene Vergleichs-Routine schreiben muessen, oder?

Danke - lg, NetSpider


NetSpider - Do 19.07.07 18:12

Also - Umwege fuehren auch nach ROM:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function CompareRect(Rect1, Rect2: TRect): Boolean;
begin
Result := true;
if (Rect1.Left <> Rect2.Left) or
   (Rect1.Top <> Rect2.Top) or
   (Rect1.Right <> Rect2.Right) or
   (Rect1.Bottom <> Rect2.Bottom)
   then Result := false;
end;


So... Habs geaendert.


GTA-Place - Do 19.07.07 18:21

Siehe auch:
http://www.delphi-library.de/topic_63135.html


jakobwenzel - Do 19.07.07 18:52

Dann muss man also prüfen, ob die Schnittfläche gleich einem der Rechtecke ist...
Irgendwie ist man damit nicht weiter als davor. :wink:


GTA-Place - Do 19.07.07 19:30

Eigentlich meinte ich speziell diese Zeile:

Delphi-Quelltext
1:
IsCol := (A.Left <= B.Right) AND (A.Right >= B.Left) AND (A.Top <= B.Bottom) AND (A.Bottom >= B.Top);                    

Wenn True, dann sind die 2 Rechtecke übereinander, ansonsten nicht.