Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];

Вниз

Головоломка на знание принципа работы компилятора Object Pascal   Найти похожие ветки 

 
Алексей Петров   (2002-03-06 08:57) [11]

Есть некоторая вероятность ложных срабатываний при первом подходе к сканированию, но она очень мала. А вот скорость сканирования - получится так себе.

Второй подход: пошустрее в Run-time, но с существенно большим объемом кодирования: Нужно для объекта посчитать размер его VMT и всех потрохов.
в отрицательной части VMT прописаны указатели на дополнительные данные об объекте. Все они находятся между нулевм смещением текущего VMT и началом следующей таблицы. Описание структуры всех этих таблиц есть в моулях System.pas и TypInfo.pas. Единственная таблица, для которой я не нашел явного описания - таблица динамических методов, но для нее структура легко восстанавливается при просмотре функции GetDynaMethod из модуля System.
Размер для них всех считается. Таким образом получается конец описания текущего объекта, а прямо следом за ним должен быть SelfPtr следующего объекта.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.005 c
4-46541
Poirot
2002-02-07 02:54
2002.04.15
Как вставить в системное меню POPUP....


1-46396
ded_di
2002-04-02 13:05
2002.04.15
печать rtf


1-46358
iva
2002-04-04 14:04
2002.04.15
как получить позицию нового окна?


1-46353
UDS
2002-04-03 23:07
2002.04.15
Одномерный массив. Как заполнить числами от 1 до 10?


3-46276
Stranger
2002-03-25 16:01
2002.04.15
Хранение файлов различных типов в полях БД MS SQL Server





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский