Ich kämpfe gerade mit dem Verständnis von Generics. Die Deklaration des generischen offenen Arrays klappt klaglos:
Code:
type
TValue<T> = class
protected
a: array of T;
function GetT(const Index: Integer): T;
procedure SetT(const Index: Integer; const Value: T);
end;
TAStr = TValue<String>;
TAInt = TValue<Integer>;
..
implementation
function TValue<T>.GetT(const Index: Integer): T;
begin
Result := a[Index];
end;
procedure TValue<T>.SetT(const Index: Integer; const Value: T);
begin
a[Index] := Value;
end;
Das läuft, so weit so gut. Wenn ich das jetzt aber anwenden will, klappt nix mehr.
Simples Beispiel:
Code:
TTest = class
private
aStr: TAStr;
aInt: TAInt;
published
property s0: String index 0 read GetT<String> write SetT<String> ;
property i0: Integer index 0 read GetT<Integer> write SetT<Integer> ;
end;
Wo liegt mein Denkfehler? Wie komme ich denn nun an die Items ran?