Autor Beitrag
Ironwulf
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Mo 22.12.08 01:10 
hy,

ist es möglich die 2 Koordinaten (x und y) von TPoint zu vergleichen? also z.b. so
ausblenden Delphi-Quelltext
1:
If Point1 = Point2 Then ...					


oder muss ich das immer so machen:
ausblenden Delphi-Quelltext
1:
If (Point1.X = Point2.X) And (Point1.Y = Point2.X) Then ...					


zweiteres fänd ich umständlich und würde in meinem Programm um einiges unübersichtlicher ausfallen
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mo 22.12.08 01:13 
Schonmal ausprobiert? :nixweiss:
Edit: Grade getestet, scheint nicht zu gehen. Definier dir doch einfach eine istgleich relation auf das TPoint Objekt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
function equal(a, b : TPoint): Boolean;
begin
  result := (a.x = b.x) and (a.y = b.y);
end;

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 22.12.08 01:18 
Schreib dir halt ne Funktion CompareTPoint oder so..

Edit: Jo, genau sowas meinte ich ;)

_________________
PROGRAMMER: A device for converting coffee into software.
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mo 22.12.08 01:19 
Bei neueren Delphiversionen gibts class operator, die genau dafür gemacht sind:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  TPointCompare = record
    x,y:Integer;
    class operator Equal(p1,p2:TPointCompare):Boolean;
  end;

Leider kriegt man das aber nicht mehr nachträglich in TPoint rein.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mo 22.12.08 01:22 
user profile iconjakobwenzel hat folgendes geschrieben Zum zitierten Posting springen:
Bei neueren Delphiversionen
:!: :shock: Da merke ich auf, das vermisse ich unter anderem bei Delphi, was ich sonst nur von Ada kenne. Was sind "neuere" Versionen? D3, D5, D7, D8, D2005?

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mo 22.12.08 01:23 
IIRC 2006, vielleicht auch seit 2005 :wink:

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Mo 22.12.08 01:23 
Würde glaub ich auch so gehen (nicht ausgetestet, auf eigene Gefahr)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
type
  TMyPoint = packed record
    case Boolean of
    true: (X,Y: Longint);
    false: (vergleich: Int64);
  end;
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
  var
    a,b: TMyPoint;
begin
  a.X := StrToInt(edit1.Text);
  a.Y := StrToInt(edit2.Text);

  b.X := StrToInt(edit3.Text);
  b.Y := StrToInt(edit4.Text);

  if a.vergleich = b.vergleich then caption := 'Gleich'
                               else caption := 'Ungleich';
end;

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Ironwulf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Mo 22.12.08 01:42 
danke für die vielen antworten, aber irgendwie schade das man sich sowas "umständlich" zusammenschreiben muss
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mo 22.12.08 09:10 
user profile iconjakobwenzel hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  TPointCompare = record
    x,y:Integer;
    class operator Equal(p1,p2:TPointCompare):Boolean;
  end;
Eindeutig die beste Lösung: In eine Unit packen, die Unit einbinden und die punkte statt als TPoint als TPointCompare deklarieren. Dann kann überall sonst mit "if Point1 = Point2 then .." gearbeitet werden.

Du könntest natürlich auch deine Version von TPoint in der von Borland mitgelieferten Unit anpassen, aber das ist wohl leider nicht ganz unbedenklich, zumal dein Programm mit jeder anderen Version von Delphi dann ncihtmehr ohne weiteres compillierbar wäre.

mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)