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

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

В чём отличие приведения типов? [D7, XP]


allucard ©   (2007-06-04 10:46:00) 

Доброго всем дня.

Подскажите неграмотному, чем отличаются записи:

(Components[i] as TLabel).Captionи
TLabel(Components[i]).Caption?


Anatoly Podgoretsky   (2007-06-04 12:53:00) [1]

А я отвечал на вопрос автора!


ЮЮ   (2007-06-04 12:17:00) [2]

> Откуда взялось деликатное is ?

У меня, двумя постами выше:

if (Components[i] is TLabel) then begin
 TLabel(Components[i]).Caption ...
 TLabel(Components[i]). ...
end;


Anatoly Podgoretsky   (2007-06-04 12:12:00) [3]

Откуда взялось деликатное is ?


ЮЮ   (2007-06-04 12:00:00) [4]

> Второе - метод грубой силы

А по мне, так - уверенности в собственных силах. Где же здесь грубость, если сначало было деликатное is ? :)


Anatoly Podgoretsky   (2007-06-04 11:44:00) [5]

> allucard  (04.06.2007 10:46:00)  [0]

Второе - метод грубой силы


ЮЮ   (2007-06-04 10:58:00) [6]

> TLabel(Components[i]).Caption?

Быстрое, (типа TObject(от целого) :)) но надо быть уверенным, что Components[i]) точно наследник TLabel, ибо в противном случае можно нарваться на "непонятный" глюк.


> (Components[i] as TLabel).Caption

Если Components[i] не наследник TLabel, то нарвешься на вполне очевидное Exception, но медленнее (типа StrToDateTime(строка) :).

Поэтому самое правильное:

if(Components[i] isTLabel) then begin
  TLabel(Components[i]).Caption
end;


allucard   (2007-06-04 10:57:00) [7]


> typecast

Это проверка на соответствие типов?


tesseract   (2007-06-04 10:52:00) [8]

as идёт с проверкой на typecast.


Наверх

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