![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чем отличается (Sender as TLabel) и TLabel(Sender)? [D7, Win95/98]
Павел_ © (2004-07-23 13:43:00)Subj. TLabel - это пример. Интуиция подсказывает, что ничем, однако хотелось бы знать точно. Заранее благодарен.
Павел_ (2004-07-23 15:02:00) [1]Понял. Спасибо всем за ответы.
Павел_ (2004-07-23 14:49:00) [2]2 All
Вообщем-то разобрался. Т.е в случае когда совершенно точно известно, что Sender есть TLabel, лучше сразу использовать TLabel(Sender)?
Sandman25 (2004-07-23 14:49:00) [3]Ага.
VMcL (2004-07-23 14:02:00) [4]>> Павел_ (23.07.04 13:43)
"(Sender as TLabel).SetFocus;" эквивалентно след. псевдокоду:
if not (Sender is TLabel) then
raise Exception.Create('Вы лопухнулись!');
TLabel(Sender).SetFocus;
>> Subdigger © (23.07.04 13:50) [3]
> а дальше (Sender as TLabel) и TLabel(Sender) не имеет значения
Если уже выполнена проверка "is", то зачем выполнять её еще раз в "as"? См. начало поста.
DiamondShark (2004-07-23 13:58:00) [5]
> Угадай, где оно сдохнет?
При компиляции ;)
ИдиотЪ (2004-07-23 13:53:00) [6]Fay ©
по любому не откомпилится)
Subdigger (2004-07-23 13:50:00) [7]Па моему привильно так
if sender is TLabel then...а дальше (Sender as TLabel) и TLabel(Sender) не имеет значения
Fay (2004-07-23 13:48:00) [8]Угадай, где оно сдохнет?
var
b1, b2 : TButton;
begin
b1 := TButton(Form1);
b2 := Form1 as TButton
ShowMessage(b1.Caption+b2.Caption);
end;
Anatoly Podgoretsky (2004-07-23 13:46:00) [9]Интуиция тебя подвела, первый с проверкой допустимости приведения, а второе метод грубой силы.