AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Impliziter Cast von Integer zu TIntDynArray?

Ein Thema von Rabenrecht · begonnen am 1. Sep 2017 · letzter Beitrag vom 1. Sep 2017
Antwort Antwort
Rabenrecht

Registriert seit: 9. Dez 2016
79 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Impliziter Cast von Integer zu TIntDynArray?

  Alt 1. Sep 2017, 14:20
Delphi-Version: 10 Berlin
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:
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;
Unter XE5 geht's...
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Impliziter Cast von Integer zu TIntDynArray?

  Alt 1. Sep 2017, 14:37
Kann es sein, dass spätestens seit Delphi Tokyo Integer implizit auf TIntDynArray gecastet werden?
Nein, aber Variant konnte schon immer implizit auf ein dynamisches Array zugewiesen werden (siehe Variants._VarToDynArray), versuch mal diesen Code hier unter XE5 zu kompilieren:

Delphi-Quellcode:
var
  x: Integer;
  y: TIntegerDynArray;
  v: Variant;
begin
  x := v;
  y := v;
Du wirst merken, dass das funktioniert (das kompilieren). Und dann wird dir klar, dass hier in einer neuen Version ein Bug gefixt wurde.
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: https://quality.embarcadero.com/browse/RSP-12780
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 1. Sep 2017 um 14:59 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 +1. Es ist jetzt 05:50 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