Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Umstellung XE auf XE10 Tokyo: Probleme Namensauflösung (https://www.delphipraxis.net/196882-umstellung-xe-auf-xe10-tokyo-probleme-namensaufloesung.html)

ULIK 27. Jun 2018 10:39

Delphi-Version: 10.2 Tokyo

Umstellung XE auf XE10 Tokyo: Probleme Namensauflösung
 
Servus,

Nach langen Jahren geliebter Delphi XE Umgebung bin ich gerade dabei, unser Hauptprodukt auf XE10.2 umzustellen. Ich habe die aktuellen Komponenten besorgt, die verwendet werden und versuche nun, das Ganze erst mal unter 32Bit wieder zum Kompilieren zu bringen. Dabei laufe ich gerade in einen sehr seltsamen Fehler:

Es wird in dem Produkt auch Graphics32 verwendet. Aktuelle Version ist geholt und ich kann ein kleines Testprojekt damit auch kompilieren.
Nun bekomme ich im eigentlichen Projekt zig Fehlermeldungen:
Zitat:

[dcc32 Fehler] paGraphicUtils.pas(262): E2251 Doppeldeutiger überladener Aufruf von 'Point'
gr32.pas(1): Verwandte Methode: function Point(Integer; Integer): TPoint;
System.Types.pas(1961): Verwandte Methode: function Point(Integer; Integer): TPoint;
Es stimmt schon, in GR32 und Types sind identische Point-Funktionen enthalten (und beide in der uses Claus eingebunden), aber das nicht erst seit der neuesten Version, die ich mir installiert habe.
Ich hab das zum Test auch gleich noch mal mit XE kompiliert, und da wird diese Stelle nicht angemeckert, obwohl ja auch hier die Funktion in beiden Units vorhanden ist.

Ein ähnliches Problem hab ich auch an einer anderen Stelle mit DeleteFile: hier meckert mir der Kompiler nicht übereinstimmende Typen PWideChar und String an, weil er dort anscheinend die Funtionen Sysutils.DeleteFile und Windows.DeleteFile durcheinanderbringt.

Kennt jemand das Problem? Klar kann ich jeden Aufruf nun mit dem expliziten Unitnamen versehen, aber irgendwas stimmt doch da nicht (vorallem weil es ja in einem kleinen Testprojekt korrekt funktioniert). Nur was?

viele Grüße,
Uli

Uwe Raabe 27. Jun 2018 10:51

AW: Umstellung XE auf XE10 Tokyo: Probleme Namensauflösung
 
In XE war die Funktion noch nicht als overload deklariert. Da GR32 mehrere Point-Funktionen auch als overload deklariert, kommt es hier zu einer Kollision.

Übrigens: System.Classes definiert auch noch eine, aber eben nicht als overload. Deswegen genügt hier die passende Reihenfolge in der uses-Anweisung.

ULIK 27. Jun 2018 11:22

AW: Umstellung XE auf XE10 Tokyo: Probleme Namensauflösung
 
Danke für die Erklärung! D.h. mir bleibt also nichts anderes übrig, als den expliziten Namespace anzugeben. Nu denn, hilft ja nüscht, sauberer ist es allemal. :roteyes:


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