Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1355571069
OLEG1963LORA
2012-12-15 15:31
2013.04.14
Аппаратное обеспечение


15-1355231463
boriskb
2012-12-11 17:11
2013.04.14
Российские школьники лидируют в изучении математики


8-1231170249
Б
2009-01-05 18:44
2013.04.14
Как загрузить GIF в Image?


15-1355913207
Дмитрий С
2012-12-19 14:33
2013.04.14
Открыть файл от имени администратора.


15-1355838147
Kerk
2012-12-18 17:42
2013.04.14
Проблема с memory-mapped file





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский