AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Generics und Rekursion- Was hat sich geändert?
Thema durchsuchen
Ansicht
Themen-Optionen

Generics und Rekursion- Was hat sich geändert?

Offene Frage von "Uwe Raabe"
Ein Thema von Der schöne Günther · begonnen am 1. Mär 2016 · letzter Beitrag vom 1. Mär 2016
Antwort Antwort
Der schöne Günther

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

Generics und Rekursion- Was hat sich geändert?

  Alt 1. Mär 2016, 10:30
Delphi-Version: 10 Seattle
Folgendes funktionierte in XE7 noch, in 10 Seattle muss ich den Typ explizit angeben sonst sagt er mir
Code:
[dcc32 Fehler] Project1.dpr(20): E2531 Methode 'someGenericStuff' erfordert explizite Typargumente
Ich finde in den Changelogs nichts. XE8 habe ich nicht ausprobiert. Gibt es irgendetwas diese Änderungen beschreibt?

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

type
   TSomeClass = class
      class procedure someGenericStuff<T: class>(const arg: T);
      class procedure someOtherGenericStuff<T: class>(const arg: T);
    end;

{ TSomeClass }

class procedure TSomeClass.someGenericStuff<T>(const arg: T);
begin
   someOtherGenericStuff(arg); // Geht immer
   someGenericStuff
      {$IF CompilerVersion > 28}<T>{$ENDIF} //Sonst E2531
   (arg);
end;

class procedure TSomeClass.someOtherGenericStuff<T>(const arg: T);
begin
   //
end;

begin
   TSomeClass.someGenericStuff(nil);
end.

(Ja, der Code macht keinen Sinn, es geht nur ums Kompilieren)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Generics und Rekursion- Was hat sich geändert?

  Alt 1. Mär 2016, 11:58
Abgesehen, dass hier scheinbar seit jeher ein Bug vorliegt (ein auf class constrainter Generic erlaubt den Typ Pointer) siehe RSP-13841
scheint es sich um eine Regression zu handeln, was die Type Inference angeht - bitte reporten.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 1. Mär 2016 um 12:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#3

AW: Generics und Rekursion- Was hat sich geändert?

  Alt 1. Mär 2016, 12:03
Seit wann können die "doofen" Generics Typen anhand der Parameter automatisch bestimmen?

Delphi-Quellcode:
class procedure TSomeClass.someGenericStuff<T>(const arg: T);
begin
  someOtherGenericStuff<T>(arg);
  someGenericStuff<T>(arg);
end;

TSomeClass.someGenericStuff<TObject>(nil); // oder sonstwas
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Mär 2016 um 12:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Generics und Rekursion- Was hat sich geändert?

  Alt 1. Mär 2016, 12:05
Seit wann können die "doofen" Generics Typen anhand der Parameter automatisch bestimmen?
Schon immer - gibt aber viele Fälle von unerwartetem Verhalten (z.B. funktioniert es nicht mit var/out Parametern) und bei untypisierten Konstanten und Literalen kann schonmal ein Typ aufgrund des Wertebereichs schon einmal entgegen der Vermutung ausfallen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 1. Mär 2016 um 12:11 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Generics und Rekursion- Was hat sich geändert?

  Alt 1. Mär 2016, 12:21
scheint es sich um eine Regression zu handeln, was die Type Inference angeht - bitte reporten.
Bittesehr: https://quality.embarcadero.com/browse/RSP-13843
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#6

AW: Generics und Rekursion- Was hat sich geändert?

  Alt 1. Mär 2016, 12:33
Vielleicht mal ein genereller Hinweis: Bei Angabe der Language-Version sollte nur dann etwas anderes als English angegeben werden, wenn das Problem eben nur in der spezifischen Sprache oder in allen nicht-Englischen Versionen auftaucht. So besteht die Gefahr, daß der Fall zunächst in der Übersetzungsabteilung landet. (Habe mir erlaubt, das in dem Fall schon zu ändern)

Im Zweifelsfall die IDE mit BDSSetLang auf Englisch umstellen und nochmal probieren. Das hat nebenbei noch den Vorteil, daß man die originalen Menü- und Dialog-Texte bekommt und die Fehlermeldungen nicht noch rückübersetzen muss.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Generics und Rekursion- Was hat sich geändert?

  Alt 1. Mär 2016, 12:40
Ich hatte "All L10N" angegeben. Ich musste es erst nachschlagen*, aber "L10N" ist wohl das Profi-Kürzel für "Localisation". Das ist doch nicht falsch, oder?
Oder sind die Chancen höher, dass der Fall schneller bearbeitet wird wenn es englisch ist?

Zitat:
Das englische Wort für Lokalisierung ist localization (amerikanisches/britisches Englisch) bzw. localisation (britisches Englisch) und wird in der Softwareentwicklung oft mit dem Numeronym l10n oder L10n abgekürzt. Die 10 ist die Anzahl der ausgelassenen Buchstaben. (Vergleiche i18n für internationalization bzw. internationalisation.)
Quelle: https://de.wikipedia.org/wiki/Lokali...areentwicklung)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#8

AW: Generics und Rekursion- Was hat sich geändert?

  Alt 1. Mär 2016, 12:47
Ich hatte "All L10N" angegeben. Ich musste es erst nachschlagen*, aber "L10N" ist wohl das Profi-Kürzel für "Localisation". Das ist doch nicht falsch, oder?
Oder sind die Chancen höher, dass der Fall schneller bearbeitet wird wenn es englisch ist?
Ob es wirklich relevant und/oder messbar ist sei dahingestellt. Es ist aber wohl so, daß die Localization-Abteilung sich gezielt diese Fälle raussucht. Wenn das dann aber nicht in ihren Bereich passt, geht der Fall erstmal wieder zurück. Solange er aber in dieser Abteilung liegt, wird sich niemand sonst dieses Falls annehmen. Folglich geht potentiell Zeit verloren. Das kann dann schon mal bedeuten, daß es erst ein Release später berücksichtigt wird.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 17:37 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