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

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

Отсутствие множественного наследования


Страницы:   1 2

Juice ©   (2005-08-03 22:41:00) 

Почему, или в чем смысл, или какое обьяснение этому факту?


Lamer@fools.ua   (2005-08-04 08:29:00) [21]

> Так как реализована поддержка интерфейсов в Делфи? Неужто без участия технологии COM от Microsoft?

AFAIK, без. Но интерфейсы Delphi совместимы с интерфейсами COM.

В System.pas есть только четыре функции, которые импортируются из oleaut32.dll (D6):

function SysAllocStringLen(P: PWideChar; Len: Integer): PWideChar; stdcall;
 external oleaut name 'SysAllocStringLen';

function SysReAllocStringLen(var S: WideString; P: PWideChar;
 Len: Integer): LongBool; stdcall;
 external oleaut name 'SysReAllocStringLen';

procedure SysFreeString(const S: WideString); stdcall;
 external oleaut name 'SysFreeString';

function SysStringLen(const S: WideString): Integer; stdcall;
 external oleaut name 'SysStringLen';


Как видно, ни одна из них к COM/OLE непосредственноне относится. Кстати, реально импортируется в данном случае (Project2) только SysFreeString.

Касательно ole32.dll: оная содержится в таблице импорта oleaut32.dll.


Джо   (2005-08-03 23:29:00) [22]


> [7] Гаврила ©   (03.08.05 22:50)

Проведи небольшой эксперимент.
Создаем вот такое приложение:

program Project1;
{$APPTYPE CONSOLE}
begin
 ReadLn
end.

Как видим, никаких модулей, кроме стандартного System не подключаем.
Запускаем, дожидаемся, пока выполнение дойдет до ReadLn и нажимаем Alt+Ctrl+M (меню View/Debug windows/Modules). В окошке "Modules" наблюдаем следующую картину:
ntdll.dll
kernel32.dll
user32.dll
gdi32.dll
advapi32.dll
rpcrt4.dll.

Теперь добавляем в приложение объявление интерфейса и класс, его реализующий. В uses по-прежнему ничего не добавляем. Проект:

program Project2;

{$APPTYPE CONSOLE}

type

 ISample = interface
 end;

 TSample = class (TInterfacedObject, ISample)
 end;

var
 Sample: ISample;

begin
 Sample := TSample.Create;
 ReadLn
end.

Опять смотрим модули - и о чудо! :) К нашим старым знакомцам добавилось:
OLEAUT32.dll
ole32.dll.
Вопрос: Ole-automation - имеет отношение к COM?
Так как реализована поддержка интерфейсов в Делфи? Неужто без участия технологии COM от Microsoft?


Джо   (2005-08-03 22:58:00) [23]


> [7] Гаврила ©   (03.08.05 22:50)
> Тоько COM тут ни при чем.

?


Джо   (2005-08-03 22:54:00) [24]


>  [6] Alexander Panov ©   (03.08.05 22:50)
> Интересно, а если есть у обоих предков свойство "зеленые
> глаза", от кого унаследуется это свойство?

Вот-вот. Придется вводить новые синтакс. формы для указания конкретного предка для конкретного свойства или метода. Собственно, при имплементации интерфейсов (interfaces) так и приходится поступать. Но тут реализация не наследуется, так что это пол-беды.


Alexander Panov   (2005-08-03 22:51:00) [25]

Интересно, а если есть у обоих предков свойство "зеленые глаза", от кого унаследуется это свойство?


Гаврила   (2005-08-03 22:50:00) [26]


>  [3] Джо ©


> очень удобно использовать COM-интерфейсы


Тоько COM тут ни при чем. Просто интерфейсы


Alexander Panov   (2005-08-03 22:50:00) [27]

Интересно, а если есть у обоих предков свойство "зеленые глаза", от кого унаследуется это свойство?


Джо   (2005-08-03 22:49:00) [28]


>  [4] Гаврила ©   (03.08.05 22:48)
> Если оба предка одноглазые - то от обоих

Тогда придется вводить новое понятие - половина свойства. :0)


Гаврила   (2005-08-03 22:48:00) [29]


>  [2] Alexander Panov ©  

Если оба предка одноглазые - то от обоих


Джо   (2005-08-03 22:48:00) [30]


>  Juice ©   (03.08.05 22:41)

Потому что слишком много с ним проблем, которые можно было разрешить только на уровне синтаксиса. А идеология Паскаля, по моему, тем и хороша, что ограничивается строгим синтаксисом. В отличие от С++, где сам Страуструп ногу сломает :)
П.С. Для указания того, что один объект может выступать в разных "ипостасях" очень удобно использовать COM-интерфейсы.


Alexander Panov   (2005-08-03 22:47:00) [31]

Интересно, а если есть у обоих предков свойство "зеленые глаза", от кого унаследуется это свойство?


Гаврила   (2005-08-03 22:43:00) [32]

Есть мама, у нее женские половые признаки
Есть папа - у него мужские
У ребенка должны быть и те и другие?


Страницы:   1 2

Наверх

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