AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TPoints vergleichen

Ein Thema von xZise · begonnen am 15. Apr 2006 · letzter Beitrag vom 15. Apr 2006
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

TPoints vergleichen

  Alt 15. Apr 2006, 12:57
Wie kann man zwei TPoints DIREKT vergleichen?

Also ich meine nicht über
P1.X = P2.X
P1.Y = P2.Y
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: TPoints vergleichen

  Alt 15. Apr 2006, 13:05
Eine Möglichkeit, die (noch) funktioniert:

if Int64(P1) = Int64(P2) then... Ob es lesbar ist und viel bringt, ist fraglich.

Gruß Hawkeye
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#3

Re: TPoints vergleichen

  Alt 15. Apr 2006, 13:18
xZise, du kannst dir doch auch eine kleine funktion schreiben:
Delphi-Quellcode:
function IsPointDifferently(point1, point2: TPoint): boolean;
begin
  result := (point1.x <> point2.x) or (point1.y <> point2.y);
end;
gruss
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: TPoints vergleichen

  Alt 15. Apr 2006, 14:23
TPoint ist ein Record, und in Delphi 2006 gibts noch Überladen von Operatoren. Dazu musst du dein TPoint noch definieren:

Delphi-Quellcode:
interface
TPoint = record
     x, y : LongInt ;
     class operator Equal (p1, p2 : TPoint) : boolean ;
end ;

implementation
class operator TPoint.Equal(p1, p2: TPoint): boolean;
begin
     Result := (p1.x = p2.x) and (p1.y = p2.y);
end;

end.
Und dann kannst du ganz bequem deine Punkte vergleichen:

Delphi-Quellcode:
var
 n1, n2 : TPoint ;
begin
     if n1 = n2 then ; // Tuwas
end ;
Aber ob dazu zu raten ist, ist ne andere Frage.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: TPoints vergleichen

  Alt 15. Apr 2006, 14:32
@ Hawkeye219:
Warum "noch"

@ MrKnogge:
Danke ^^ Hatte ich auch so gemacht

@ Jelly:
Hatte ich auch gesehen, aber ich habe D2006 net... Nur D2005 PE!

@ all:
Hat sich somit erledigt, wenn keiner eine bessere für D2005 PE, wie die von MrKnogge ist, kennt.
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: TPoints vergleichen

  Alt 15. Apr 2006, 15:33
Kenne auch nichts besseres würde aber statt

function IsPointDifferently(point1, point2: TPoint): boolean; ein

function EqualPoint(const Point1, Point2: TPoint): Boolean; vorziehen.

1.) vergleichbar zu EqualRect()
2.) const Parameter

Gruß Hagen
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: TPoints vergleichen

  Alt 15. Apr 2006, 15:40
Zitat von xZise:
@ Hawkeye219:
Warum "noch"
Falls die Breite der TPoint-Felder auf 64 Bit geändert wird, funktioniert der TypeCast nicht mehr. Der wParam-Parameter in den Messages wurde auch mal von 16 Bit auf 32 Bit verbreitert.

Mein Rat: bleibe bei den Einzel-Vergleichen, das ist für den Leser leichter nachzuvollziehen. Der von Delphi erzeugte Assembler-Code ist für beide Varianten übrigens nahezu identisch. Bei den Einzelvergleichen kommt Delphi sogar mit einem CPU-Register aus.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz