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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2014, 14:28   #11
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

это все описано в "полиморфизм", а вы не читаете, в армию надо
eval вне форума Ответить с цитированием
Старый 04.04.2014, 14:29   #12
Khayzenberg
Пользователь
 
Регистрация: 21.07.2011
Сообщений: 54
Сообщение

Цитата:
Сообщение от Stilet Посмотреть сообщение
У тебя есть son:TFather, в котором нет некоего поля. Но приведением типов TSon(son) ты это поле каким-то образом всетки получаешь?
Поле(свойство) получаю так как оно уже есть в самом наследнике...
Цитата:
Сообщение от Khayzenberg Посмотреть сообщение
Код:
type TSon = class(TFather)
   private
     fSonField:Integer;
   public
    property SonField:Integer read fSonField write fSonField;
    constructor Create;
end;
Khayzenberg вне форума Ответить с цитированием
Старый 04.04.2014, 14:30   #13
Khayzenberg
Пользователь
 
Регистрация: 21.07.2011
Сообщений: 54
Смущение

Цитата:
Сообщение от eval Посмотреть сообщение
это все описано в "полиморфизм", а вы не читаете, в армию надо
Значит что-то упустил... посмотрим...
Khayzenberg вне форума Ответить с цитированием
Старый 04.04.2014, 14:55   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Поле(свойство) получаю так как оно уже есть в самом наследнике...
Как ты его можешь получать, если в переменной которую ты оперируешь совсем другой класс? Я не понимаю.
Кто-нибудь разьясните мне что у автора происходит.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.04.2014, 15:43   #15
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Кто-нибудь разьясните мне что у автора происходит.
Код:
var x: TObject;
x:=TMyObject.Create;// создание наследника  с присвоением в переменную базового типа 
// в переменной находится правильный класс, но компилятор об этом не знает
TmyObject(x).myfield;  // компилятор приводит тип к нужному получаем доступ к полям
другой способ приведения типа
Код:
var 
  sm: TObject;
  cld: TMyObject absolute sm;

sm:=TMyObject.Create;
cld.myfield:='xxx';
подробности здесь
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 04.04.2014 в 15:52.
evg_m на форуме Ответить с цитированием
Старый 04.04.2014, 16:01   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а... все. Дошло.
Да уж. Это называется натянуть трусы поверх кимоно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.04.2014, 16:31   #17
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Как ты его можешь получать, если в переменной которую ты оперируешь совсем другой класс? Я не понимаю.
ну так про что читать я уже указал..
eval вне форума Ответить с цитированием
Старый 04.04.2014, 16:33   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Все равно не вижу смысла так создавать объекты.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.04.2014, 16:44   #19
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
P.S Здесь я демонстрирую листинг придуманных классов
у автора тут просто теория
eval вне форума Ответить с цитированием
Старый 04.04.2014, 18:02   #20
Khayzenberg
Пользователь
 
Регистрация: 21.07.2011
Сообщений: 54
Хорошо

Все искал что же я упустил в полиморфизме, и вот спасибо evg_m буду знать в какую сторону идти...
Да это просто теория как указал eval. Просто мне пришло вголову, а что если класс нужно определять во время выполнения программы, а не компиляции. Попробывал накидать у себе примеры и вот именно наткунля с проблемой полей наследника. Спасибо что подказали в какую сторону идти, и расширили мои познания. Stilet может это звучит и дико, а может когда нибуть и тибе понабиться такой прием, а может это и глупая затея все покажет время. Все равно спасибо всем!
Khayzenberg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доступ к полям класса -спискам zl@dey Общие вопросы C/C++ 1 31.03.2012 04:06
доступ к полям GridView Алек Помощь студентам 0 23.12.2011 16:03
Доступ к БД через Internet yulia Работа с сетью в Delphi 3 04.03.2009 00:44
Доступ к полям компонента TTable с большими целыми числами AleksP Общие вопросы Delphi 6 13.10.2008 18:41