Форум: "Прочее";
Текущий архив: 2013.04.14;
Скачать: [xml.tar.bz2];
ВнизTClassList. Получить класс по названию. Найти похожие ветки
← →
dummy_user (2012-12-18 18:06) [0]Добавляю название класса в TClassList.
Как теперь его получить по имени класса?
Типа:
type
TMyClass = class;
TMyClassEx = class (TMyClass)
var
ClassList: TClassList;
O: TMyClass;
begin
ClassList.Add(TMyClass);
O:= ClassList.Get("TMyClassEx").Create;
end;
← →
dummy_user (2012-12-18 18:07) [1]*
ClassList.Add(TMyClassEx);
← →
брат Птибурдукова (2012-12-18 18:56) [2]Никак, в общем-то. Используй TStrings, используй TDictionary.
← →
брат Птибурдукова (2012-12-18 18:57) [3]Можно к TClassList хелпер прихреначить, который будет по всему списку бегать и выдавать нужный класс.
← →
Аббат Пиккола (2012-12-18 19:00) [4]Я, конечно, не спец, но по-моему RTTI позволяет делать такие вещи.
← →
dummy_user (2012-12-18 19:31) [5]
> брат Птибурдукова (18.12.12 18:56) [2]
>
> Никак, в общем-то. Используй TStrings, используй TDictionary.
>
TDictionary - Delphi 7.
TStrings - там только TObject можно добавить, а не мета-класс.
> Аббат Пиккола (18.12.12 19:00) [4]
>
> Я, конечно, не спец, но по-моему RTTI позволяет делать такие
> вещи.
Есть в младших версиях.
Тогда сделаю через TList.
← →
брат Птибурдукова (2012-12-18 20:07) [6]
> TStrings - там только TObject можно добавить
"Когда б вы знали, из какого сора…" Если б ты знал, какие мерзости подчас приводят к TObject... %-)
> по-моему RTTI позволяет делать такие вещи
ну что-то вроде GetClass("qqq").Create там соорудить можно, но TClassList, насколько я понимаю, там и рядом не лежит. Посему вопрос — автору нужен список классов или создание класса по имени?
← →
dummy_user (2012-12-18 20:10) [7]
> создание класса по имени?
Да.
← →
stas © (2012-12-18 20:23) [8]Может быть тебе это надо ?
type
TMyClassType =class of TMyClass;
.....
var
cls: TMyClassType;
r:TMyClass;
ClassName:string;
...
ClassName:="TMyClassEx";
cls:=TMyClass(FindClass (ClassName));
r:=cls.Create (self);
...
procedure regClass;
begin
RegisterClass(TMyClass);
RegisterClass(TMyClassEx);
end;
....
initialization
regClass;
← →
брат Птибурдукова (2012-12-18 20:29) [9]
> cls:=TMyClass(FindClass (ClassName));r:=cls.Create (self);
Два уточнения: 1) надо или GetClass().Create, или FindClass(); if Assigned(cls) then cls.Create 2) класс должен наследоваться от TPersistent.
← →
dummy_user (2012-12-18 21:24) [10]
> stas © (18.12.12 20:23) [8]
> RegisterClass(TMyClass);
Оно не для системных нужд?
← →
брат Птибурдукова (2012-12-18 21:33) [11]Оно не.
← →
Palladin © (2012-12-19 10:25) [12]
> Оно не для системных нужд?
каких таких системных?
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.04.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c