Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2012, 11:30   #1
RuVarez
Форумчанин
 
Аватар для RuVarez
 
Регистрация: 25.08.2010
Сообщений: 258
По умолчанию TObject(Data) or (Data as TObject)

Привет всем! сообственно вопрос в названии темы - в чем разница?
Ну тойсть есть допусти
Код:
...
var 
  Data : Pointer;
  Some : TObject; 
begin
...
Код:
Some := TObject(Data);
или
Код:
Some := Data as TObject;
RuVarez вне форума Ответить с цитированием
Старый 07.05.2012, 11:35   #2
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

F1 (RTFM) рулез не по децки.
=master= вне форума Ответить с цитированием
Старый 07.05.2012, 11:35   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

as между классами поидее, с проверкой типов.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.05.2012, 11:46   #4
RuVarez
Форумчанин
 
Аватар для RuVarez
 
Регистрация: 25.08.2010
Сообщений: 258
По умолчанию

так в том то и дело что обеми конструкции подходят тойсть грубо говоря я могу написать что типа
Код:
type 
  TMyObj = class
  public
    ResData : String;
  end;
var
  Some : String;
Код:
Some := TMyObj(Data).ResData;
и
Код:
Some := (Data as TmyObj).ResData;
Обе конструкции будут работать
RuVarez вне форума Ответить с цитированием
Старый 07.05.2012, 12:16   #5
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Только ошибки при этом будут разные.
Читать учебники надо.
=master= вне форума Ответить с цитированием
Старый 07.05.2012, 13:25   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Код:
TObject(Data) or (Data as TObject)
ну зачем же бред писать?
Все классы наследованы от базового типа OBject, и обладают его свойствами.

Если класс не указан, то он по-умолчанию TObject.
Человек_Борща вне форума Ответить с цитированием
Старый 07.05.2012, 13:34   #7
RuVarez
Форумчанин
 
Аватар для RuVarez
 
Регистрация: 25.08.2010
Сообщений: 258
По умолчанию

Это в качестве примера! Не важно какой класс будет
RuVarez вне форума Ответить с цитированием
Старый 07.05.2012, 13:34   #8
RuVarez
Форумчанин
 
Аватар для RuVarez
 
Регистрация: 25.08.2010
Сообщений: 258
По умолчанию

Да вы что ? и какие же ошибки?
RuVarez вне форума Ответить с цитированием
Старый 07.05.2012, 13:47   #9
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

вот когда поймаете тогда и узнаете, раз читать в лом, тогда ломом самое то.
=master= вне форума Ответить с цитированием
Старый 07.05.2012, 13:48   #10
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> и какие же ошибки?

если типизируемый указатель на самом деле не является наследником от типизируещего класса, то в случае с:

Код:
(Data as TSomeClass)
получим красивый exception, а в случае с:

Код:
TSomeClass(Data)
получим непредсказуемый результат, вплоть до форматирования С: (шутка).

Разница в производительности небольшая, так что лучше везде использовать as.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
missing data provider or data packet Dexes БД в Delphi 3 06.01.2012 11:58
TObject в ValueListEdit'оре D-mon Общие вопросы Delphi 2 24.06.2011 14:11
Sender(TObject); Claster Помощь студентам 3 22.06.2011 16:53
Sender:TObject Superlotles Помощь студентам 10 03.12.2009 13:54
TObject *Sender sergei64_89 Общие вопросы C/C++ 1 06.06.2008 13:36