![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Наследники
mfender © (2010-11-13 18:16:00)Есть какой-то класс (TPersistent) и у него куча потомков. Вот как добыть предков класса - понятно (ClassParent). А как всех потомков найти?
_oxffff (2010-11-21 20:50:00) [1]
> mfender (13.11.10 18:16)
> Есть какой-то класс (TPersistent) и у него куча потомков.
> Вот как добыть предков класса - понятно (ClassParent).
> А как всех потомков найти?
В рамках одного приложения?
uses rtti;
context:=TRttiContext.create;
context.GetTypes: TArray<TRttiType>;
Германн (2010-11-21 16:49:00) [2]
> Я его уже спрашивал, зачем это надо
Я тоже спрашивал. Вот и решил погадать на кофейной гуще. :)
DVM (2010-11-21 16:43:00) [3]
> Германн © (21.11.10 16:37) [21]
Я его уже спрашивал, зачем это надо? Молчит.
> Плугин?
Если плагин в DLL там все еще более сложно становится, в каждой DLL своя RTTI и TPersistent в разных плагинах и основной программе - это все разные классы, полностью до байта может идентичные, но разные там не менее.
В RTTI надо копаться - там списки всех классов и прочее. В D2010 есть модуль RTTI с его помощью можно получить список классов. По сссылке на форум SQL там есть вроде пример его использования, я не проверял работает или нет.
Германн (2010-11-21 16:37:00) [4]
> Если класс не используется в программе он не попадет в исполняемый
> файл
<telepator>
Плугин?
</telepator>
:)
DVM (2010-11-21 16:23:00) [5]
> mfender
вот тут тоже такой же ерундой кто-то мается http://www.sql.ru/forum/actualthread.aspx?tid=767406
DVM (2010-11-21 16:21:00) [6]
> mfender
> Те объекты что созданны мне не нужны.
Если класс не используется в программе он не попадет в исполняемый файл и что ты там собрался искать не понятно. Это бессмысленно.
Германн (2010-11-21 15:05:00) [7]
> Мне нужно просто буквы названий классов
'A'..'Z'
Ты бы все таки уточнил что это за классы-потомки? Кем они разработаны и когда?
mfender (2010-11-21 14:49:00) [8]
> KSergey © (18.11.10 16:04) [15]
> Надо искать именно классы-потомки, или созданные на момент
> поиска экземпляры этих классов?
Классы-потомки. Те объекты что созданны мне не нужны. Мне нужно просто буквы названий классов.
mfender (2010-11-21 14:48:00) [9]
> В run-time искать некие классы имеет право только ЮЗ. (Ну
> и ещё некоторые, ну так два-три. Не более! :)
понимаю ваш пиэтет к этим людям, сам к ним отношусь с почтением, в частности к ЮЗ. Но мы тут смертные иногда тоже не пальцем деланы. я маленький человек, программирование - хобби, и форум тут "начинающим" называется. Вот я и спрашиваю совета. Совета, а не высокопарного "погугли, лошара". Если не понятно, ещё раз: программирование - хобби, и всё что я делаю - только для себя. Не зарабатываю на этом денег. Мне просто интересно. Когда я чего-то достигаю-постигаю - рад до усёру. А когда что-то не понятно - спрашиваю. В основном здесь, опять же потому, что есть такие люди как ЮЗ, которые способны адекватно и по теме ответить на поставленный вопрос.
KSergey (2010-11-18 16:04:00) [10]Надо искать именно классы-потомки, или созданные на момент поиска экземпляры этих классов?
Германн (2010-11-18 03:22:00) [11]В run-time искать некие классы имеет право только ЮЗ. (Ну и ещё некоторые, ну так два-три. Не более! :)
Только они понимают что они ищут и для чего ищут!
Германн (2010-11-18 02:24:00) [12]
> mfender (18.11.10 02:10) [12]
>
> Нет, найти их нужно в run-time.
>
Зачем?
Очередной раз задача xyz?
mfender (2010-11-18 02:10:00) [13]Нет, найти их нужно в run-time.
Есть класс TKakoitoClass = class(TPersistent)
И у него несколько потомков (TClass1 = class(TKakoitoClass) ..... TClassN = class(TKakoitoClass)).
DVM (2010-11-17 17:44:00) [14]Вообще сама задача (найти потомков TPersistent) весьма странная. Найти где?
Во всей VCL или той части, что используется конкретной программой?
Или в папке, в которой лежит куча модулей в которых есть классы и дерево надо построить по исходным кодам.
DVM (2010-11-17 17:40:00) [15]
> Object Browser в IDE.
К тому же скорее всего в данном случае дерево строится просто на основе разбора исходного кода, он же еще не компилирован.
DVM (2010-11-17 17:35:00) [16]
> Юрий Зотов © (17.11.10 15:42) [8]
> Object Browser в IDE.
Сдается мне что он дерево строит не снизу вверх, а сверху вниз.
Я потому и спросил, что именно в такой постановке снизу вверх я не могу придумать задачу, где такое было бы необходимо.
Юрий Зотов (2010-11-17 15:42:00) [17]
> DVM © (17.11.10 15:19) [6]
Задачи разные бывают. Например, Object Browser в IDE.
clickmaker (2010-11-17 15:29:00) [18]> А ЗАЧЕМ?
заплатить таки алименты )
DVM (2010-11-17 15:19:00) [19]
> mfender (13.11.10 18:16)
> А как всех потомков найти?
А ЗАЧЕМ?
Юрий Зотов (2010-11-17 14:38:00) [20]
> mfender (17.11.10 13:07) [3]
> Если я правильно понял, "регистрируются" - это RegisterClasses?
Не обязательно. Например, никто не мешает создать свой список (или даже дерево) классов и регистрировать в нем.