Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Соответствие классов [D5, Win2k]


Unknown user ©   (2004-12-02 19:33:00) 

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


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

jack128 ©   (04.12.04 17:39) [12]

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

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


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

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

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


VMcL   (2004-12-04 13:51:00) [3]

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

:-)


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

VMcL ©   (03.12.04 07:19) [8]

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

С уважением,


Unknown user   (2004-12-03 10:38:00) [5]

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


VMcL   (2004-12-03 07:19:00) [6]

>> Игорь Шевченко ©  (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.


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

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


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


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


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

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

InheritsFrom.

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


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


> Cls.inheritsfrom( TItem ) -


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


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


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

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


Unknown user   (2004-12-02 19:41:00) [11]

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


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

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


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

inheritsfrom


Наверх

Титульная страница Поиск, карта сайта Написать письмо