Hallo Jungs,
ich versuche mich gerade mit den Generics. Doch bis an hin leider erfolglos. Der Kompiler meint nur dazu
Code:
[DCC Fehler] Unit1.pas(42): E2515 Typparameter 'TKey' ist mit Typ 'TC1' nicht kompatibel
[DCC Fehler] Unit1.pas(55): E2010 Inkompatible Typen: 'TKey' und 'TObject'
[DCC Fehler] Unit1.pas(64): E2515 Typparameter 'TKey' ist mit Typ 'TC1' nicht kompatibel
[DCC Fataler Fehler] Project1.dpr(5): F2063 Verwendete
Unit 'Unit1.pas' kann nicht compiliert werden
Kennt jemand das Problem und weiss jemand eine Lösung? Hier mein vergeblicher Versuch:
Delphi-Quellcode:
type
TC1 = class
aValue: string;
end;
tc2 = class
aValue: string;
end;
tcl<TKey: class> = class(tObjectList)
private
function GetItem(Index: integer): TKey;
procedure SetItem(Index: integer; const Value: TKey);
public
property Items[Index: integer]: TKey read GetItem write SetItem;
end;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
l1: tcl<tc1>;
l2: tcl<tc2>;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function tcl<TKey>.GetItem(Index: integer): TKey;
begin
result := inherited items[index];
end;
procedure tcl<TKey>.SetItem(Index: integer; const Value: TKey);
begin
inherited items[index] := value;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
l1 := tcl<tc1>.create;
l2 := tcl<tc2>.create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if l1 <> NIL then FreeAndnIL(l1);
if l2 <> NIL then FreeAndNIL(l2);
end;
Der
Create scheint ihm gar nicht zu gefallen
Vielen Dank schon Mal