Форум: "Основная";
Текущий архив: 2011.08.28;
Скачать: [xml.tar.bz2];
ВнизПередача в процедуру параметра разных типов Найти похожие ветки
← →
borispnz © (2010-02-05 09:59) [0]При работе столкнулся с такой ситуацией. Есть 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 Извините, если вопрос поднимался, но что-то после многочасового копания в Гугле так и не нашел. Вероятно, руки кривые :-)
← →
Сергей М. © (2010-02-05 10:07) [1]Если overload не выход, то решений минимум 2:
1. параметр передается как Variant или OleVariant
2, параметр передается как IUnknown
← →
icWasya © (2010-02-05 11:01) [2]Насколько разные типы у O1 и O2?
Есть ли у этих типов общий предок?
Если O1 и О2 - наследники TControl, то можно посмотреть в сторону GetMethodAddress.
← →
Игорь Шевченко © (2010-02-05 12:14) [3]
> Но это не выход - слишком много разнородных объектов по
> типам и количеству параметров может быть. Чувствую, что
> в направлении pointer. Но вот как?
передавать интерфейс, интерфейс реализовывать у каждого класса из передаваемых.
← →
oxffff © (2010-02-05 12:50) [4]
> borispnz © (05.02.10 09:59)
Читать про полиморфизм.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2011.08.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c