Главная страница
    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.046 c
3-1100943105
Andrey V.
2004-11-20 12:31
2004.12.19
Не работает FB1.5


6-1097261922
QuestionX
2004-10-08 22:58
2004.12.19
Размер принимаемых данных


14-1100622564
ИМХО
2004-11-16 19:29
2004.12.19
Связать мобильник с компом


1-1102282888
Alexey Romanskiy
2004-12-06 00:41
2004.12.19
Как запустить ярлык?


3-1100715732
Богдан
2004-11-17 21:22
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский