Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

RTTI   Найти похожие ветки 

 
DK   (2004-08-17 10:42) [0]

Задача не для слабонервных:-( В переменной string храниться имя класа порожденного от TPersistent. Необходимо креировать экземпляр этого класса. Зная только его имя. Может кто знает, как
это реализовать без RegisterClass. Спасибо!!!


 
Юрий Зотов ©   (2004-08-17 11:24) [1]

Без RegisterClass - никак. Разве что Вы заведете свой собственный список классов - но это фактически получится то же самое. Дублировать уже готовый механизм просто нет смысла.

В "Кладовке" видел статью на тему, как можно автоматически зарегистрировать все содержащиеся в программе классы. Может пригодиться. Но, если задача позволяет, я бы просто написал RegisterClasses где-нибудь в initialization, вот и все.


 
Анонимщик ©   (2004-08-17 11:59) [2]

Все-таки интересен контекст, в котором нужнен такой результат.
Я знаю, как зарегистрировать, но это извращения. А DK лучше бы посмотрел, как при загрузке формы из ресурса делается то же самое, может, на что-то и натолкнет.


 
Erik1   (2004-08-17 12:07) [3]

Если стоит принципиальная задача обойтись без  RegisterClass, то можно создать масив с адресами конструкторов. В качестве индекса этого масива использовать перечисляемый тип. Типа:
Type
 MyClass = (myPresent1, myPresent2);
 TRefPresent = class of TPresent;

Const FListForm: Array[MyClass] of TRefPresent =
 (TArutelu....., TArutelu....);


 
DK   (2004-08-17 12:29) [4]

Спасибо за ответы! Я уже убедился, что без RegisterClass и GetClass не обойтись. А привязываться к недокументированным механизмам - тоже мало приятного. Но все же, где-то IDE хранит информацию о типах (в design-time), без регистрации класса. И наверно в EXE где-то это остаеться?


 
Анонимщик ©   (2004-08-17 12:33) [5]

Вот именно, в EXE. Вот и или разбмрайся с форматом PE-файла (и в исходниках forms.pas), или говори, что за задача - получишь не такой лобовой, но более подходящий путь.



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

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
3-1092292069
happyandry
2004-08-12 10:27
2004.09.05
Как изменить цвет выделенной строки в DBGrid ?


14-1092758228
Ega23
2004-08-17 19:57
2004.09.05
Навеяло недавними обсуждениями


1-1092860381
nester
2004-08-19 00:19
2004.09.05
Что делать с локальными типизироваными константами в Делфи 7


1-1092742517
Scenic
2004-08-17 15:35
2004.09.05
IHTMLDocument2 = interface(IHTMLDocument)


1-1092667695
Yakudza
2004-08-16 18:48
2004.09.05
WndProc у TPageControl