AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Delphi 10.4 - Probleme mit Class Operatoren

Ein Thema von bytecook · begonnen am 11. Aug 2020 · letzter Beitrag vom 12. Aug 2020
Antwort Antwort
Benutzerbild von bytecook
bytecook

Registriert seit: 6. Aug 2010
Ort: Dornbirn
143 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Delphi 10.4 - Probleme mit Class Operatoren

  Alt 11. Aug 2020, 21:39
Delphi-Version: 10.4 Sydney
Hi Leute,

nutze die Tage grade um meinen Source von 10.2 auf 10.4 bringen. Dabei kommt es bei der Verwendung von Graphics32 zu einem Problem mit den Class Operatoren, die ich unter 10.2 nicht hatte.
In der Unit Gr32 ist TFloatPoint wie folgt definiert:

Code:
  TFloatPoint = record
    X, Y: TFloat;
  {$IFDEF SUPPORT_ENHANCED_RECORDS}
  public
    {$IFNDEF FPC}
    {$IFDEF COMPILERXE2_UP}
    constructor Create(P: TPointF); overload;
    {$ENDIF}
    constructor Create(P: TPoint); overload;
    constructor Create(X, Y: Integer); overload;
    constructor Create(X, Y: Single); overload;
    {$ENDIF}

    // operator overloads
    class operator Equal(const Lhs, Rhs: TFloatPoint): Boolean;
    class operator NotEqual(const Lhs, Rhs: TFloatPoint): Boolean;
    class operator Add(const Lhs, Rhs: TFloatPoint): TFloatPoint;
    class operator Subtract(const Lhs, Rhs: TFloatPoint): TFloatPoint;
    {$IFDEF COMPILERXE2_UP}
    class operator Explicit(A: TPointF): TFloatPoint;
    class operator Implicit(A: TPointF): TFloatPoint;
    {$ENDIF}

    class function Zero: TFloatPoint; inline; static;
  {$ENDIF}
  end;
So sollte eigentlich der Vergleich zweier Floatpoints mittels (fp1 <> fp2) oder eine simple Addition (fp1 + fp2) wie unter <= 10.2 kein Problem darstellen, ich erhalte jedoch die Fehlermeldung <[dcc32 Fehler] E2015 Operator ist auf diesen Operandentyp nicht anwendbar>
Habe ich bei 10.4 was übersehen? Danke vorweg!
Peter
Was mache ich, wenn ein Bär meine Frau angreift?
Nichts. Er hat sie angegriffen, soll er doch selber sehen, wie er sich verteidigt.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.706 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Delphi 10.4 - Probleme mit Class Operatoren

  Alt 11. Aug 2020, 22:09
Kann es sein dass COMPILERXE2_UP bei 10.4 nicht gesetzt wird?

Wenn ich mir
https://github.com/graphics32/graphi...2_Compiler.inc
anschaue dann hat das noch keiner fitt für 10.4 gemacht.


(Und warum bauen die Leute das alles immer so dass man bei jedem Delphi-Update immer wieder alles anfassen muss? Ach ja, damit alles noch 20 Jahre bis Delphi 4 rückwärtskompatibel bleiben kann, stimmt).
  Mit Zitat antworten Zitat
Benutzerbild von bytecook
bytecook

Registriert seit: 6. Aug 2010
Ort: Dornbirn
143 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Delphi 10.4 - Probleme mit Class Operatoren

  Alt 11. Aug 2020, 22:25
Kann es sein dass COMPILERXE2_UP bei 10.4 nicht gesetzt wird?

Wenn ich mir
https://github.com/graphics32/graphi...2_Compiler.inc
anschaue dann hat das noch keiner fitt für 10.4 gemacht.


(Und warum bauen die Leute das alles immer so dass man bei jedem Delphi-Update immer wieder alles anfassen muss? Ach ja, damit alles noch 20 Jahre bis Delphi 4 rückwärtskompatibel bleiben kann, stimmt).
Stimmt - und da bin ich tatsächlich vorher drüber gefallen, aaargh, aber danke Dir!
Haja, bin zwischenzeitlich auf den Pull im Git gestossen. Luebbe hat das schon fit gemacht, siehe

https://github.com/graphics32/graphi...90e38c5497bb69

und

https://github.com/luebbe/graphics32

Mal schauen, was sonst noch rummotzt...

Lg,

Peter
Peter
Was mache ich, wenn ein Bär meine Frau angreift?
Nichts. Er hat sie angegriffen, soll er doch selber sehen, wie er sich verteidigt.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.592 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Delphi 10.4 - Probleme mit Class Operatoren

  Alt 11. Aug 2020, 22:56
(Und warum bauen die Leute das alles immer so dass man bei jedem Delphi-Update immer wieder alles anfassen muss? Ach ja, damit alles noch 20 Jahre bis Delphi 4 rückwärtskompatibel bleiben kann, stimmt).
Das ist auch kein Argument. Es gibt Konstrukte, die beides abdecken. (Aber ich sehe auch keinen Sinn darin, derart veraltete Versionen zu unterstützen)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.824 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Delphi 10.4 - Probleme mit Class Operatoren

  Alt 11. Aug 2020, 23:20
Sich gescheite aufwärtskompatible defines zu bauen oder einfach bestehende zu nutzen ist ja auch so schwer...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.509 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Delphi 10.4 - Probleme mit Class Operatoren

  Alt 11. Aug 2020, 23:44
Nja, verständlicher wäre es ja, sich im Code nicht an Versionen zu orientieren, sondern es in Funktionen aufzuteilen.
Stellt euch mal vor in Delphi kommt was in Version 29.0
und im Free Pascal in Version 3.3.0,
dann wird es in Version 30.0 wieder entfernt, aber bleibt im FreePascal drin.

Für uralte Delphi könnte man noch auf $IFDEF ConditionalExpressions mit $IFDEF VERxxx gehen (aber das ist sooooo alt, das hab ich aufgegeben zu supporten)
und ansonsten ist es nunmal besser auf $IF CompilerVersion >= x zu gegen, was in neuen Delphis nicht immer gleich abraucht (außer man muß wirklich was am Code ändern)

Dann gibt es noch RtlVersion, LibVersion usw.
Außerdem kann man im $IF Konstanten oder Declared() und Defined() benutzen und es auch noch wunderbar mit AND/OR verknubbeln, was beim IFDEF/IFNDEF manchmal ins perverse Ausartet.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (11. Aug 2020 um 23:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.549 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Delphi 10.4 - Probleme mit Class Operatoren

  Alt 12. Aug 2020, 08:28
Ich bin froh, daß ich keine alten Versionen unterstützen muss, Code derart kompliziert halten zu müssen, wäre mir ein Graus. Lesbarkeit ist 0, Pflegen kann man das Unkraut auch nicht wirklich. Es bleibt ja nicht bei den Klassendefinitionen, die Nutzung unterscheidet sich dann auch je weiter die Schere auseinander klafft. Neue Sprachfeatures in erzwungenermaßen abwärtskompatiblen Code einzubauen halte ich darum für unnötig riskant.

Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.706 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Delphi 10.4 - Probleme mit Class Operatoren

  Alt 12. Aug 2020, 08:46
Oh ja, ich auch. Wenn man das erste Projekt mal auf 10.4 gebracht hat will man die anderen gleich hinterher ziehen.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.824 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Delphi 10.4 - Probleme mit Class Operatoren

  Alt 12. Aug 2020, 10:38
mal auf 10.4 gebracht hat
Ich würde mich aktuell eher von ner Klippe stürzen als aktuell schon irgendwas auf 10.4 zu bringen

Zum Thema Unterstützung älterer Versionen, alles runter bis XE geht sehr pflegeleicht.
Zum Thema gescheite IFDEFS: in dem Beispiel oben geht es eigtl um das Vorhandensein von TPointF und nicht um die Version - das lässt sich leicht mit einem $IF declared(TPointF) lösen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (12. Aug 2020 um 10:41 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 03:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf