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

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

Передача в процедуру параметра разных типов [D7, WinXP]


borispnz ©   (2010-02-05 09:59:00) 

При работе столкнулся с такой ситуацией. Есть 2 разных объекта с похожими методами, например, O1 и O2
O1.Add, O1.Value
O1.Add, O1.Value
Как передать в функцию заранее неизвестно что передаем?Примерно так

Funct(O: Type)
 O.Add()
 Result := O1.Value

x := Funct(O1)
x := Funct(O2)

Понятно, что можно использовать overload
Funct(O: Type1); overload
Funct(O: Type2); overload
Но это не выход - слишком много разнородных объектов по типам и количеству параметров может быть. Чувствую, что в направлении pointer. Но вот как? Заранее надеюсь на помощь

PS Извините, если вопрос поднимался, но что-то после многочасового копания в Гугле так и не нашел. Вероятно, руки кривые :-)


oxffff   (2010-02-05 12:50:00) [1]


> borispnz ©   (05.02.10 09:59)  


Читать про полиморфизм.


Игорь Шевченко   (2010-02-05 12:14:00) [2]


> Но это не выход - слишком много разнородных объектов по
> типам и количеству параметров может быть. Чувствую, что
> в направлении pointer. Но вот как?


передавать интерфейс, интерфейс реализовывать у каждого класса из передаваемых.


icWasya   (2010-02-05 11:01:00) [3]

Насколько разные типы у O1 и O2?
Есть ли у этих типов общий предок?
Если O1  и О2 - наследники TControl, то можно посмотреть в сторону GetMethodAddress.


Сергей М.   (2010-02-05 10:07:00) [4]

Если overload не выход, то решений минимум 2:

1. параметр передается как Variant или OleVariant
2, параметр передается как IUnknown


Наверх

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