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

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

Typecasting [D6, XP]


Magedon ©   (2009-03-24 17:40:00) 

Доброе время суток уважаемые.

Вразумите или подскажите где по-русски можна вразумиться какая разница между TEdit(Sender)  и (TEdit as Sender) ?

Спасибо


clickmaker   (2009-03-25 08:13:00) [1]

- официант, это чай или кофе?
- а вы не можете разобрать?
- нет...
- тогда какая вам разница?


Немо   (2009-03-24 18:34:00) [2]

проверяем

procedure TForm1.Button1Click(Sender: TObject);
begin
if Sender is TEdit then TEdit(Sender).Text:='wewew';
(Sender as TEdit).Text:='wewew'; //invalid class typecast
end;


Palladin   (2009-03-24 18:19:00) [3]

здрасте.. а исключение?


Magedon   (2009-03-24 18:17:00) [4]

Тоесть между

if Sender is TEdit then
 TEdit(Sender)


и

(TEdit as Sender)

нет никакой разницы?


Немо   (2009-03-24 18:16:00) [5]

брекуем и смотрим разницу

tButton(sender).Caption:='wewe';
0044D947 BA74D94400       mov edx,$0044d974
0044D94C 8BC3                mov eax,ebx
0044D94E E829F5FDFF       call TControl.SetText

(sender as tButton).Caption:='wewe';
0044D953 8BC3               mov eax,ebx
0044D955 8B1584624200     mov edx,[$00426284]
0044D95B E82859FBFF       call @AsClass
0044D960 BA74D94400       mov edx,$0044d974
0044D965 E812F5FDFF       call TControl.SetText


Плохиш   (2009-03-24 18:05:00) [6]


> какая разница между TEdit(Sender)  и (TEdit as Sender) ?

Первое, просто приведение типа, второе, приведение типа с предварительной проверкой на возможность оного и подъёмом исключения при недопустимости приведения.


Наверх

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