Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.183 Beiträge
 
Delphi 12 Athens
 
#5

AW: RTTI Typ ermitteln bei generics?

  Alt 23. Sep 2010, 12:39
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (23. Sep 2010 um 12:48 Uhr)
  Mit Zitat antworten Zitat