Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Abgeleitete generische Klasse ist nicht mehr generisch

  Alt 4. Okt 2018, 13:13
Hallo!

Dieser Lösung hier folgend habe ich eine identische Implementierung vorgenommen:
Delphi-Quellcode:
type
  TmyArray = class(System.Generics.Collections.TArray)
  public
    class function Contains<T>(const Values: array of T; const Item: T; const Comparer: IEqualityComparer<T>; out ItemIndex: Integer): Boolean; overload; static;
    class function Contains<T>(const Values: array of T; const Item: T; out ItemIndex: Integer): Boolean; overload; static;
    class function Contains<T>(const Values: array of T; const Item: T): Boolean; overload; static;
    class function IndexOf<T>(const Values: array of T; const Item: T; const Comparer: IEqualityComparer<T>): Integer; overload; static;
    class function IndexOf<T>(const Values: array of T; const Item: T): Integer; overload; static;
  end;
Doch wenn ich diesen Typ dann analog zu TArray<string> als TmyArray<string> verwenden will, meckert der Compiler:
Delphi-Quellcode:
procedure Produce;
var
  myArray: TmyArray<string>; // <-- E2003 Undeklarierter Bezeichner: 'TmyArray<>'
begin
  {...}
end;
Lasse ich das <string> in der Deklaration weg, kompiliert das zwar, kracht dann aber anschließend (logischerweise) in der Verwendung:
Delphi-Quellcode:
procedure Produce;
var
  myArray: TmyArray;
begin
  myArray := ['Foo', 'Bar', 'Baz']; // <-- E2001 Ordinaltyp erforderlich
end;
Und nu steh ich auf dem Schlauch.

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat