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

Вниз

Соответствие классов   Найти похожие ветки 

 
Unknown user ©   (2004-12-02 19:33) [0]

МАстера подскажите как проверить что переменная Cls:TClass, имеет тип TItemClass=class of TItem?


 
Суслик ©   (2004-12-02 19:35) [1]

inheritsfrom


 
Суслик ©   (2004-12-02 19:36) [2]

или на равенство, если нужно точное условие


 
Unknown user ©   (2004-12-02 19:41) [3]

Cls.inheritsfrom(TItemClass) -ошибка компиляции
Cls=TItemClass -тоже.  Сравнивать надо именно переменную типа TClass не имеет ли она тип TItemClass. Как?


 
Суслик ©   (2004-12-02 19:42) [4]


>  [3] Unknown user ©   (02.12.04 19:41)

ищи ошибку - я тебе все верно сказал


 
Суслик ©   (2004-12-02 19:45) [5]


> Cls.inheritsfrom(TItem) -


тебе нужно это


 
Юрий Зотов ©   (2004-12-02 23:47) [6]

> Unknown user ©   (02.12.04 19:41) [3]

InheritsFrom.

Ошибка компиляции связана с чем-то другим, не с этим. И что за ошибка - разве у нее нет текста?


 
Игорь Шевченко ©   (2004-12-03 01:00) [7]

Если нужно точное сравнение, то можно попробовать


function IsItemClass (const Value: TClass): Boolean;
begin
 Result := Value.ClassInfo = TItemClass.ClassInfo;
end;


Если же допустимы и наследники, то InheritsFrom


 
VMcL ©   (2004-12-03 07:19) [8]

>>Игорь Шевченко ©  (03.12.04 01:00) [7]

ИМХО, лучше так:
function IsItemClass (const Value: TClass): Boolean;
begin
  Result := (Value <> nil) and (Value.ClassInfo = TItemClass.ClassInfo);
end;

P.S. $BOOLEVAL, конечно, OFF.


 
Unknown user ©   (2004-12-03 10:38) [9]

Спасибо всем, как всегда не углядел.


 
Игорь Шевченко ©   (2004-12-03 23:54) [10]

VMcL ©   (03.12.04 07:19) [8]

Лучше :) А еще лучше сравнивать ClassName, что в общем-то довольно очевидно. Вредно по ночам советы давать.

С уважением,


 
VMcL ©   (2004-12-04 13:51) [11]

>>Игорь Шевченко ©  (03.12.04 23:54) [10]

:-)


 
jack128 ©   (2004-12-04 17:39) [12]

Игорь Шевченко ©   (03.12.04 23:54) [10]
А еще лучше сравнивать ClassName

разве равенство ClassName гарантирует что это один и тот же класс? Могут существовать одноименные классы объвленные в разных модулях.


 
Игорь Шевченко ©   (2004-12-04 22:38) [13]

jack128 ©   (04.12.04 17:39) [12]

Да, безусловно могут. Ошибся я, спасибо. Значит, остается ClassType для строгого сравнения.

При должной иерархии, кстати, сравнение по имени класса является довольно удобным средством не упоминать ненужные unit"ы в списке uses.



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

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

Наверх




Память: 0.49 MB
Время: 0.041 c
4-1099393875
Леонид
2004-11-02 14:11
2004.12.19
Перехват сообщения другого приложения


3-1100946650
DimDim
2004-11-20 13:30
2004.12.19
Простой запрос на выборку


1-1102411493
Maxuz
2004-12-07 12:24
2004.12.19
Обращение к контролам на форме при динамическом её создании...


8-1094127115
VasRog
2004-09-02 16:11
2004.12.19
Векторная графика


1-1102308959
Frozzen
2004-12-06 07:55
2004.12.19
Нестандартная работа с dll