![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В чём отличие приведения типов? [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.