Ab XE7 empfehle ich, GetTypeKind(T)
zu nutzen. Das evaluiert der Compiler direkt und entfernt somit nicht ausgeführte Codepfade.
Genial, aber warum wissen weger
OH noch DokWiki etwas davon?
Dort gibt es noch nichtmal die obligatorischen "Das ist Funktion Xyz in
Unit Abc. Emba verfügt über keine Infos."-Einträge.
[add]
Noch genialer ist aber, was ich bisher aber noch nirgendwo in Google finden konnte, daß man Dieses sogar in den Conditional Expressions verwenden kann.
Delphi-Quellcode:
{$IF GetTypeKind(TForm) in [tkClass, tkInterface]}
ShowMessage('TForm ist eine Klasse/Interface');
{$ELSE}
ShowMessage('TForm ist KEINE Klasse/Interface');
{$ENDIF}
{$IF GetTypeKind(Integer) in [tkClass, tkInterface]}
ShowMessage('Integer ist eine Klasse/Interface');
{$ELSE}
ShowMessage('Integer ist KEINE Klasse/Interface');
{$ENDIF}
Jetzt nur noch schauen, ob man das auch innerhalb der Generics nutzen kann, aber ich glaub nicht.