Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Class Operator - Interner Fehler: C1624 (https://www.delphipraxis.net/160015-class-operator-interner-fehler-c1624.html)

Aphton 22. Apr 2011 22:29

Delphi-Version: 2006

Class Operator - Interner Fehler: C1624
 
Schön langsam reichts mir mit den Bugs =\

Ich habe folgendes
Delphi-Quellcode:
TVector2 = record
{..}
  function Size: Double;
  class operator Subtract(const A, B: TVector2): TVector2;                   overload;
{..}
end;
Size liefert einfach (X*X + Y*Y)^0.5 - also die Länge des Vektors zurück.
Nun erhalte ich fatale Fehler bei folgender Konstruktion
Delphi-Quellcode:
  if (NewMousePos-MousePos).Size > Distance then
    {..}
Nicht dass es alzu problematisch wäre. Ich kann mir nun extra ne Variable für die Differenz anlegen und damit weiterarbeiten, aber das sollte ich nicht müssen!

Namenloser 22. Apr 2011 23:06

AW: Class Operator - Interner Fehler: C1624
 
Den gleichen Fehler hatte ich auch schon, übrigens auch bei einer Vektorimplementierung. Ist wirklich sehr nervig, aber eine zusätzliche Variable ist meines Wissens der einzige Workaround...

Deep-Sea 26. Apr 2011 07:59

AW: Class Operator - Interner Fehler: C1624
 
Andere finden Ostereier, du findest Fehler :P
Ja, in D2006 war dieser Fehler drin. Ist nun aber schon länger behoben ...

himitsu 26. Apr 2011 09:12

AW: Class Operator - Interner Fehler: C1624
 
Zitat:

Zitat von Deep-Sea (Beitrag 1096951)
Andere finden Ostereier, du findest Fehler :P
Ja, in D2006 war dieser Fehler drin. Ist nun aber schon länger behoben ...

Kein Sorge, es gibt noch genug Fehler an diesen Record-Funktionen,
auch wenn schon ein paar jeweil über ein gekauftes Bugfix Upgrade behoben wurden.

Aorallem dann, wenn es um Verschachtelungen von Record-Methoden geht, knallt es noch zu häufig.
die Lösung ist sehr einfach ... verzichte auf Verschachtelungen und schon gibt's kaum noch Probleme :?
Zitat:

Delphi-Quellcode:
if (NewMousePos-MousePos).Size > Distance then
  {..}

Delphi-Quellcode:
Temp := NewMousePos-MousePos;
if Temp.Size > Distance then
  {..}


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:27 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