Перегрузка: я не думаю, что для этого есть флаг RTTI, но вы можете проверить, существует ли более одного метода с одинаковым именем. Это не идеально, но это, вероятно, так близко, как вы собираетесь получить.
Переопределение: сначала убедитесь, что метод является виртуальным. (Или динамическая или отправка сообщения.) Затем проверьте предков класса на наличие других методов с тем же именем и свойством VirtualIndex.
Аннотация: Глубоко в разделе реализации файла rtti.pas, вместе с набором флагов данных метода, находится один из них, называемый mfAbstract
, определяемый как 1 shl 7;
. Нет кода, который ссылается на это, но он реализован в RTTI, сгенерированном компилятором. Если у вас есть ссылка TRttiMethod для метода, вы можете проверить его следующим образом:
IsVirtual := PVmtMethodExEntry(method.Handle).Flags and (1 shl 7) <> 0;
PVmtMethodExEntry объявлен в модуле TypInfo
, поэтому вам нужно использовать его для работы.