![]() |
Delphi-Version: 10 Berlin
Impliziter Cast von Integer zu TIntDynArray?
Kann es sein, dass spätestens seit Delphi Tokyo Integer implizit auf TIntDynArray gecastet werden?
Folgender Code mach mir seit dem Update Probleme:
Delphi-Quellcode:
Unter XE5 geht's...
function myFunc(vInt : Integer):Int;overload;
function myFunc(vIntDynArray : TIntDynArray):Int;overload; [...] procedure callingProcedure; var vVariant : Variant; begin [...] result := myFunc(vVariant); <- hier schreit der Compiler "Doppledeutiger überladener Aufruf von myFunc" end; |
AW: Impliziter Cast von Integer zu TIntDynArray?
Zitat:
Delphi-Quellcode:
Du wirst merken, dass das funktioniert (das kompilieren). Und dann wird dir klar, dass hier in einer neuen Version ein Bug gefixt wurde.
var
x: Integer; y: TIntegerDynArray; v: Variant; begin x := v; y := v; Denn dieser Aufruf war schon immer zweideutig - der Compiler hat nur fälschlicherweise den impliziten Cast von Variant auf Integer dem von Variant auf ein dynamisches Array vorgezogen bzw den Overload mit einem dynamischen Array bei einer als overload markierten Routine ignoriert (kannst du testen, indem du den Integer overload und das overload der anderen Version mal auskommentierst und siehst, dass der myFunc aufruf nun kompiliert. Ich hab kein Ticket für die genaue Problematik gefunden, aber es könnte mit diesem zusammenhängen: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz