OK, das ist ein bissl anders:
Delphi-Quellcode:
type TSpecialRecord = TMyRecord<TSpecialClass>;
var SpecialRecord: TSpecialRecord;
if FieldInfo.FieldType.AsRecord.Handle = TypeInfo(TSpecialRecord) then
// oder
if FieldInfo.FieldType.Handle = TypeInfo(TSpecialRecord) then
Aber Ansonsten haben Records nunmal keine Vererbung,
und demnach haben TMyRecord<> und TMyRecord<irgendwas> keine Verbindung.
Allerdings ist die
RTTI ja die letzen Jährchen etwas gewachsen, vielleicht bieten die neuen
RTTI-Klassen ja irgendwo Zugriff auf eine neue Information, bezüglich dieser Generics.
[edit]
Delphi-Quellcode:
type
TGenRec<T> = record
x, y: T;
end;
TRec = TGenRec<Integer>;
procedure TForm5.FormCreate(Sender: TObject);
var
y: TRttiContext;
x: TRttiType;
begin
y := TRttiContext.Create;
x := y.GetType(TypeInfo(TRec));
if X.AsRecord.Handle = TypeInfo(TRec) then
Beep;
if X.Handle = TypeInfo(TRec) then
Beep;
end;
Zitat:
[DCC Fehler] Unit5.pas(37): E2134 Typ 'TRec' besitzt keine Typinformation
[DCC Fehler] Unit5.pas(38): E2134 Typ 'TRec' besitzt keine Typinformation
[DCC Fehler] Unit5.pas(40): E2134 Typ 'TRec' besitzt keine Typinformation
[DCC Fataler Fehler] Project5.dpr(5): F2063 Verwendete
Unit 'Unit5.pas' kann nicht compiliert werden
tja, das war's wohl