Вы, вероятно, найдете следующие TObject
методы класса полезными:
- ClassType - возвращает класс объекта
- ClassParent - дает родительский класс класса
- InheritsFrom - возвращает, если класс наследует от другого класса (т. Е. Проверяет всю цепочку наследования). Включает текущий класс.
Итак, вы могли бы достичь того, что вы хотите (происходит от TParent, но не от TDescendant?) С помощью чего-то вроде следующего кода (непроверенный, на данный момент Delphi не имеет):
if obj.ClassType.InheritsFrom(TParent)
and not obj.ClassType.InheritsFrom(TDescendant) then...
Или, если я неправильно понял, и вы просто хотите посмотреть, является ли объект TParent, а не каким-либо потомком, попробуйте:
if obj.ClassType = TParent then...
Delphi значительно опередил свое время, предоставив доступ к классам через метаклассы , поэтому вместо простой проверки имени класса вы можете получить доступ к реальному объекту класса.