Форум: "Потрепаться";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];
ВнизГоловоломка на знание принципа работы компилятора Object Pascal Найти похожие ветки
← →
Shaman_Naydak (2002-03-05 22:33) [7]Мда, Алексей, задал ты задачку..
Основная проблема в том, что классы хранятся в виде дерева, где потомок указывает на предка, а наоборот не пройтись ;(
Посмотрел я как подымает TReader.
Ну что я могу сказать..
Тут комбинируются 2 способа.
1. Общеизвестный поискать FindClass"ом (найдет тех, кого через RegisterClass загнали в ClassList.
2. От заданного класса конечного класса он проходится по всем полям объектам, если не находит подымается вверх.
=> из 2 могу предложить след. уродский способ:
пройтись по всем компонентам TApplication"a, передав класс каждого из них в искалку.
Искалка проходится по всем полям объектам и для КАЖДОГО! вызывает рекурсивно себя же..
после списка полей переходит на проверку ParentClass и.т.д.
Результат складируется в TList"e (Жаль, что до борландовского ClassList"a не достучаться, он в implementation"e).
Так можно найти не только TComponent"ы..
Правда ясен пень создать здоровый объект можно только у наследников TComponent"ы, так как у него конструктор виртуальный.
Жутко заинтересовался, буду ждать стоящих идей решения.
Могу в принципе запрограммить то, что наговорил..
правда мне этот алгоритм не нравится, однако!
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.004 c