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

Вниз

Господа, как всё-таки правильно?   Найти похожие ветки 

 
Ega23 ©   (2004-08-16 10:34) [0]

Тут несколько раз за последнее время проскакивал вопрос, даже ответы на него читал, но так и не запомнил. А тут пришлось старую систему классов перетрясать, вот вспомнилось.

Так вот, как провильно:

if (Controls[i] is TButton) then
   (Controls[i] as TButton)....

или

if (Controls[i] is TButton) then
   TButton(Controls[i])....
  ?


 
pasha_golub ©   (2004-08-16 10:37) [1]

А по-моему, результат один. Я лично пользуюсь вторым методом. Но это, ИМХО, дело вкуса.


 
Гаврила ©   (2004-08-16 10:39) [2]


> if (Controls[i] is TButton) then
>    (Controls[i] as TButton)....

Это тоже самое, что и
if (Controls[i] is TButton) then
  if (Controls[i] is TButton) then
     (TButton(Controls[i]) else raise...


 
Ega23 ©   (2004-08-16 10:41) [3]

Понял.


 
Labert ©   (2004-08-16 10:42) [4]

The as operator performs checked typecasts. The expression

object as class

returns a reference to the same object as object, but with the type given by class. At runtime, object must be an instance of the class denoted by class or one of its descendants, or be nil; otherwise an exception is raised.


 
Anatoly Podgoretsky ©   (2004-08-16 10:46) [5]

Оба варианта правильные, второй чуть быстрее.


 
Ega23 ©   (2004-08-16 10:47) [6]

Всем спасибо!


 
Piter ©   (2004-08-16 12:42) [7]

Правильно так:

(Controls[i] as TButton)...

или

if (Controls[i] is TButton) then
  TButton(Controls[i])....


В первом варианте при проверке выскочит Exception (можно использовать try), во втором просто в IF попадет ложь и операторы if"а не выполнятся...


 
Ega23 ©   (2004-08-16 12:55) [8]

Piter ©   (16.08.04 12:42) [7]

Вообще-то я немного не так вопрос задавал.



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

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

Наверх




Память: 0.48 MB
Время: 0.052 c
3-1092045554
Марат
2004-08-09 13:59
2004.09.05
Сортировка в DBGrid


3-1092292238
REA
2004-08-12 10:30
2004.09.05
Буквы большие и маленькие


1-1092810790
andy
2004-08-18 10:33
2004.09.05
Asm-процедуры для работы со строками PChar


14-1092386962
Layner
2004-08-13 12:49
2004.09.05
Чечня начала завоевание Европы


14-1092743459
Григорьев Антон
2004-08-17 15:50
2004.09.05
Delphi+БД. Какую книгу посоветуете?