|
Сервер
поддерживается
кафедрой информатики и
вычислительной техники ГрГУ
тел. +375-(0)152-445-101
E-mail : kadan@grsu.grodno.by
|
Структура, описывающая формат RTTI
Приведем
структуру, описывающую формат RTTI:
pRTTI = ^RTTI;
RTTI = record
vtTypeInfo : Word; ═══{ короткий указатель
на дополнительную
════════════════════════информацию
о классе }
vtFieldTable: Word; ══{ короткий указатель
на таблицу
════════════════════════с
информацией о полях класса }
vtMethodTable : Word; { короткий указатель на
таблицу
════════════════════════с
информацией о методах класса}
vtDynamicTable: Word; { короткий указатель на
таблицу
════════════════════════динамических
методов }
vtClassName: Word; ═══{ короткий указатель
на строку с именем класса } vtInstSize:
Word; ════{ размер экземпляра класса }
vtParent: Pointer; ═══{ указатель на
класс-предок }
vtDefault: Pointеr; ══{ указатель на
метод-обработчик сообщений Windows }
vtNewInst: Pointer; ══{ указатель на метод,
создающий новый
════════════════════════экземпляр
класса }
vtFreeInst: Pointer; ═{ указатель на метод,
уничтожающий
════════════════════════экземпляр
класса }
vtDestroy : Pointer; ═{ указатель на
деструктор }
end;
Понятия
"короткий указатель" в Object Pascal нет; здесь имеется в
виду, что первые пять элементов RTTI
должны находиться в одном сегменте
с ней, поэтому приводятся только их
смещения. Кстати, именно этот факт
наводит на размышления о том, что в
32-разрядной версии формат RTTI будет
видоизменен. Не следует забывать,
что он не документирован фирмой Borland и
здесь приводится для лучшего
понимания внутренних механизмов
классов.
Информация
в RTTI "живет
самостоятельной жизнью" и может
использоваться без создания
экземпляров объектов.
Для
комментария : kadan@grsu.grodno.by
|