![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание объекта с динамическим классом [D7, XP]
Александр Семак © (2007-12-10 08:28:00)Как можно при создании объекта формировать строку названия его класса. Типа такого:
Object1 := Create.<вот тут формируем строку с именем класса>(...)
Сергей М. (2007-12-10 08:57:00) [41]
> Александр Семак (10.12.07 08:55) [5]
тогда см. [3]
Александр Семак (2007-12-10 08:55:00) [42]2 Сергей М. действительно напутал, именно это и имел в виду.
oxffff (2007-12-10 08:46:00) [43]
> Все классы, которые нужно таким образом создавать, должны
> иметь виртуальный конструктор.
Это неправда.
Григорьев Антон (2007-12-10 08:37:00) [44]Все классы, которые нужно таким образом создавать, должны иметь виртуальный конструктор. Дальше заводится тип TMyClassRef = class of TSomeClass (это т.н. ссылка на класс), где TSomeClass - общий предок всех классов, которые нужно создавать таким образом. После этого экземпляр требуемого класса можно создавать с помощью конструкции Obj := X.Create(...), где X - переменная типа TMyClassRef. Этой переменной можно присваивать любые классы типа TSomeClass или его наследников. Если же необходима именно строка с именем, то все классы должны ещё иметь среди предков TPersistent, быть зарегистрированными с помощью процедуры RegisterClass, и тогда ссылку на класс по его имени можно получить через FindClass.
Сергей М. (2007-12-10 08:37:00) [45]
> := Create. <вот тут
М.б. ты имел ввиду
Object1 := <вот тут.Create(...)
?
Думкин (2007-12-10 08:30:00) [46]Куда формировать?