Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Наследники


Страницы:   1 2

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?

Не обязательно. Например, никто не мешает создать свой список (или даже дерево) классов и регистрировать в нем.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо