Читаем Виртуальная библиотека Delphi полностью

1. Каким образом реализована поддержка COM/DCOM?

В языке Object Pascal появилось понятие интерфейса (interface). Описание интерфейса похоже на описание обычного класса, в нем не может быть указан спецификатор видимости. Список членов ограничен методами и свойствами, для чтения/записи которых используются методы. Поля в интерфейсе недопустимы. Типы параметров и возвращаемых значений ограничены типами, допустимыми в COM/DCOM, их полный перечень можно найти в on-line help.

Интерфейсы могут наследоваться, в соответствии с идеологией COM, допускается только одиночное наследование. Класс может реализовывать несколько интерфейсов, в этом случае он должен объявить методы, которые по типу параметров и возвращаемых значений совпадают с описанием методов соответствующего интерфейса.

Все интерфейсы имеют в качестве базового класса интерфейсный тип IUnknown, объявленный в модуле System следующим образом:

IUnknown = interface

  ['{00000000-0000-0000-C000-000000000046}']

  function QueryInterface(const IID: TGUID; out Obj): Integer; stdcall;

  function _AddRef: Integer; stdcall;

  function _Release: Integer; stdcall;

end;

Для поддержки OLE Automation также в модуле System имеется интерфейс IDispatch:

IDispatch = interface(IUnknown)

  ['{00020400-0000-0000-C000-000000000046}']

  function GetTypeInfoCount(out Count: Integer): Integer; stdcall;

  function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): Integer; stdcall;

  function GetIDsOfNames(const IID: TGUID; Names: Pointer;

    NameCount, LocaleID: Integer; DispIDs: Pointer): Integer; stdcall;

  function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;

    Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): Integer; stdcall;

end;

Для облегчения работы с COM имеется класс TInterfacedObject, который реализует методы, объявленные в интерфейсе IUnknown.

2. В Delphi 3.0 допускается множественное наследование классов?

Нет, нет и еще 1024 раза нет. Язык Object Pascal в Delphi 3.0 не позволяет вам наследовать класс от более чем одного класса. Строго говоря, вы всегда наследуете ваш новый класс ровно от одного уже имеющегося. Если вы явно не указываете базовый класс, то им становится TObject, стоящий таким образом в иерархии вообще всех классов.

Слухи о множественном наследовании идут из-за того, что в языке Object Pascal в Delphi 3.0 реализована поддержка интерфейсов для модели COM/DCOM. При этом новый класс может наследоваться от одного класса и реализовывать произвольное количество интефейсов. Соответствующее объявление нового типа:

TNewObject = class(TBaseObject, ISomeInterface, IAnotherInterface, IDummyInterface)

вызывает некоторую путаницу и может быть похожа на множественное наследование. Здесь можно провести анологию с языком Java. Интерфейсы в Delphi 3.0 похожи на интерфейсы в Java с отличием в том, что Java допускает множественное наследование интерфейсов, а Delphi — нет.

Фактически объявление интефейса представляет из себя кусочек таблицы виртуальных методов (VMT), который присоединяется к основной VMT класса.

<p>Delphi, С++ Builder и базы данных: вопросы и ответы</p>

Прошу вас рассказать, как подключать к Personal Oracle с помощью BDE. Для меня пока это остается загадкой.

Доступ к Personаl Oracle (как и к любой другой версии этой СУБД) осуществляется следующим образом.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных