Delphi-Quellcode:
unit Rezept;
interface
uses
Schritt, Zugabe, Hashes;
type
TRezept<T: TSchritt> =
class
Dateiname:
String[70];
Name,
Gruppe,
Datum:
String[40];
Schritte: TArray<T>;
procedure SchrittLoeschen(
const Index: Integer);
procedure ReadCSV(Dateiname:
String);
virtual;
abstract;
procedure WriteCSV(Dateiname:
String);
virtual;
abstract;
procedure LeereSchritt(
var Index: Integer);
virtual;
abstract;
End;
PKRezept = ^TKRezept;
TKRezept =
class(TRezept<TKSchritt>)
procedure ReadCSV(Dateiname:
String);
override;
procedure WriteCSV(Dateiname:
String);
override;
procedure LeereSchritt(
var Index: Integer);
override;
End;
PMRezept = ^TMRezept;
TMRezept =
class(TRezept<TMSchritt>)
procedure ReadCSV(Dateiname:
String);
override;
procedure WriteCSV(Dateiname:
String);
override;
procedure LeereSchritt(
var Index: Integer);
override;
End;
Hat aber kaum mit dem Problem hier zu tun, dass abhängig von einem Typen von T eine abstrakte Methode plötzlich was ausführen könnte. Polymorphie hat in dem Zusammenhang nix mit Generics zu tun.
Ich seh in dem Code nich die Stelle, wo du die Rezept Instanz erstellst, aber gemäß dieser
Unit oben bist du dort nicht mehr generisch, sondern leitest von einer generischen Spezialisierung ab, da die generische Klasse nunmal abstrakte Methoden hat - deshalb habe ich meinen Satz von vorher hier nochmal zitiert.