![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
![]()
eval, у вас неправильная справка. AS ничего не проверяет, это просто приведение типа. А вот IS проверяет, если хоть в каком-то колене дерева предков проверяемого объекта есть желаемый класс, оператор IS вернет TRUE.
|
![]() |
![]() |
![]() |
#12 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,887
|
![]() Код:
Вы получили EInvalidCast, который возбудил as после того как его проверка показала несоответствие типа. А вот AV вы получите при простом приведении типа (если вам очень повезет). Чаще всего исключения при неверном приведении типа не будет вообще. Последний раз редактировалось northener; 27.09.2013 в 10:46. |
![]() |
![]() |
![]() |
#13 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,887
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#14 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
![]()
as возвращает либо ссылку либо nil, вы думаете как он это делает?
правильно через проверку .. грубо ас делает так Код:
Последний раз редактировалось eval; 27.09.2013 в 10:54. |
![]() |
![]() |
![]() |
#15 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
![]()
Все равно опасно без IS работать. Лишняя проверка IS упреждает и сводит к 0, вероятность получить EInvalidTypecast а ещё можно своё else прописать.
|
![]() |
![]() |
![]() |
#16 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,887
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#17 | |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#18 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,887
|
![]()
2 eval
Строчка if x <> nill then showmessage(x.Caption); не будет выполнена в случае несоответствия типов так как предыдущая строчка возбудит исключение упомянутое выше. |
![]() |
![]() |
![]() |
#19 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
![]()
а вы попробуйте
|
![]() |
![]() |
![]() |
#20 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,887
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать так, чтобы при наведении мышкой на объект, который находится под другим, этот объект выходил на первый план? | Zaza7 | HTML и CSS | 3 | 17.01.2013 10:23 |
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? | Farrel | Общие вопросы C/C++ | 2 | 13.11.2010 17:37 |
sender as | nark03 | Общие вопросы Delphi | 5 | 19.01.2009 17:11 |
sender as.. | nark03 | Помощь студентам | 2 | 18.01.2009 16:13 |
TObject *Sender | sergei64_89 | Общие вопросы C/C++ | 1 | 06.06.2008 13:36 |