Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.036 c
1-1101912967
Elast
2004-12-01 17:56
2004.12.19
Поиск в TList


3-1101121950
Aleksandr.
2004-11-22 14:12
2004.12.19
Не удается избавиться от ошибки "Не удалось найти строку..." ADO


1-1102406665
tytus
2004-12-07 11:04
2004.12.19
Как в ListBox-e рисовать разные значки?


4-1098538256
RedLord
2004-10-23 17:30
2004.12.19
блокировка перезапуска компа


14-1101549347
KilkennyCat
2004-11-27 12:55
2004.12.19
Забавно, но факт, дающий пищу для размышлений...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский