Архив рубрики «Объектно-ориентированные технологии»

Единообразная передача данных, уведомления, объекты с подключением

Часто одной программе необходимо передать данные другой. Например. встроить таблицу Excel в документ WinWord или сделать что-нибудь еще. В СОМ предложен общий подход для передачи данных.

Для поддержки единообразной передачи данных разработан интерфейс IDataObject. Если реализовать поддержку этого интерфейса в одном приложении, то его данные будут доступны любым другим программам, работающим с этим интерфейсом в качестве клиента.
Прочитать остальную часть записи »

Моникеры, определение и создание моникеров

COM технология включает механизм, обеспечивающий создание экземпляра объекта и его инициализацию за один этап. Для этого предназначены моникеры, также являющиеся СОМ-объектами. Каждый моникер знает, как создать и инициализировать экземпляр другого объекта.
Прочитать остальную часть записи »

Перманентность, структурированное хранилище, хранилище и потоки

Перманентность
СОМ-объекты состоят из методов и данных, и могут встречаться такие из них, которым необходимо сохранять свои данные в течение периода неактивности. В подобных случаях объекту необходимо сделать свои данные перманентными (persistent), что обычно означает их запись на диск. СОМ-объекты могут делать это разными путями, но наиболее часто для этих целей используется структурированное хранилище (Structured Storage).
Прочитать остальную часть записи »

Управляющие элементы ActiveX

Расширение возможностей СОМ технологии привело к идее компонентного построения программ, что позволяет использовать только те части программы, которые нужны в настоящий момент для выполнения поставленной задачи.

С течением времени возможность создания элементов управления ActiveX была включена и в другие системы быстрой разработки приложений, включая и Delphi.
Прочитать остальную часть записи »

Доступ к Microsoft Office: интерфейс Word.Basic, модель объектов, интерфейс автоматизации

Главное достоинство технологии OLE Automation состоит в том, что это общепринятый стандарт и с его помощью можно интегрировать приложения Delphi с другими программами. Типичный пример — интеграция с офисными программами, такими как WinWord и Excel или со специальными программами, такими как 0040 СУБД Oracle, CRAXDRT Crystal Reports и т. п.
Прочитать остальную часть записи »

Доступ к объекту автоматизации

Сервер автоматизации предоставляет своим клиентам для доступа объект специального типа — dispatch object. При этом в адресном пространстве приложения клиента, называемого в этом случае контроллером, присутствует вариантная переменная, содержащая интерфейс IDispatch, предоставляющий ему доступ к этому объекту на OLE-сервере.
Прочитать остальную часть записи »

IDC (Internet Database Connector) — общие сведения и особенности

1) Общие сведения об IDC
Web-сервер IIS представляет доступ к БД с использованием Internet Database Connector. IDC работает как промежуточное звено системы, обеспечивая взаимодействие между тем, что отображается при просмотре страницы HTML и тем, как данные запрашиваются на уровне БД. При установке IIS необходимо указать установку OBDC. Ядром, выполняющим всю работу с БД с помощью драйвера ODBC, является файл HttpOdbc.DLL – ISAPI-расширение, устанавливаемое при инсталляции IIS в каталог C:\WINDOWS\system32\inetsrv. Источник данных ODBC должен быть системным (System DSN).
Прочитать остальную часть записи »

OLE Automation, типы данных OLE и Dispatch-интерфейсы

1. OLE Automation

Автоматизация OLE — это способность управлять OLE другого приложения программным путем.

Приложения могут обеспечить доступ к своим сервисам через интерфейсы СОМ. После этого такими сервисами сможет воспользоваться любой фрагмент кода, способный вызывать методы СОМ-объекта. В СОМ такой стандартный способ обеспечения программируемости называется автоматизацией (Automation). Часто для создания программ, управляющих другими приложениями, используются простые языковые инструменты типа Visual Basic. Создаваемые ими программы называют также и сценариями (script).
Прочитать остальную часть записи »

Маршалинг и демаршалинг, Динамический маршалинг и информация о типе

• Если СОМ-объект реализован в составе внутреннего сервера, то клиентский указатель указывает непосредственно на интерфейс объекта.

• Если СОМ-объект реализован в составе локального сервера, то клиентский указатель указывает на заместителя (proxy) внутри клиентского процесса. Заместитель — это просто другой СОМ-объект, обычно предоставляюший клиенту те же интерфейсы, что и объект локального сервера, с которым Клиент пытается взаимодействовать. Вызов клиентом метода через такой указатель на интерфейс на самом деле вызывает исполнение кода заместителя. Заместитель принимает переданные параметры и упаковывает их для пересылки. Далее запрос передается в процесс, который фактически реализует объект.
Прочитать остальную часть записи »

Методика создания клиента в Delphi

а) Для взаимодействия с СОМ-сервером целесообразно создать:
• Проект, например, с именем ComTest.Dpr.
• Блок с описанием интерфейса. Он может быть полностью аналогичен файлу, созданному при проектировании сервера и просто скопирован.
• Блок с экранной формой, например, с именем ComForm. В этом блоке следует подключить блок с интерфейсом IntfCom и включить константу с GUID класса Class_Sum:

Unit ComForm;
Uses.., ComObj, IntfCom; Const
Class_Sum:TGUID='{EODBF9F4-2C63-HD6-8E8F-00608C93D419}’;

Прочитать остальную часть записи »

Функции для создания (активизации) СОМ объектов в Delphi

Способы активизации СОМ-объектов клиентом

В Delphi предусмотрено несколько способов для активизации СОМ-объекта клиентом:
• Для создания одного экземпляра объекта можно использовать функцию API CoCreatelnstance:
OIeCheck(CoCreateInstance(Clsid, // CLSID объекта требуемого класса
Nil, // Нужно для агрегирования (не используем)
I, // Тип сервера (1, 4, 16 удаленный)
IID, // Идентификатор требуемого интерфейса
рСоm)); // Указатель на запрашиваемый интерфейс
Прочитать остальную часть записи »

Интерфейс фабрики классов и его методы в Delphi

Фабрики классов используются для создания экземпляров объектов СОМ-объекты не порождаются приложением-клиентом. Вместо этого в СОМ используется механизм, названный генератором классов. Генераторы классов — это объекты, чье главное предназначение — создавать другие объекты. В Delphi фабрики классов для СОМ-объектов создаются автоматически.
Прочитать остальную часть записи »

Типовой механизм создания СОМ-объектов, серверы объектов СОМ

1) Первоначально клиент вызывает функцию библиотеки СОМ — СоCreatelnstance, передавая ей CLSID нужного объекта, а также IID интерфейса, поддерживаемого объектом. Кроме того, можно указать тип сервера: «в процессе» — 1 или локальный — 4. Допускается не указывать тип сервера.

OIeCheck(CoCreateInstance(Clsid, // CLSID объекта требуемого класса
Nil, // Нужно для агрегирования (не используем)
I, // Тип сервера (1, 4, 16 удаленный)
IID, // Идентификатор требуемого интерфейса
рСоm)); // Указатель на запрашиваемый интерфейс

Прочитать остальную часть записи »

Обзор технологий СОМ, серверы и объекты СОМ, библиотеки

Модель COM (Component Object Model) представляет собой независимую от языка программирования спецификацию, базирующуюся на объектах. Эта спецификация определяет требования к созданию составных объектов (Component Objects) и механизм предоставления доступа к составным объектам, т.е. обеспечивает поддержку средств, разрешающих реализовывать объекты, которые могут вызываться между различными процессами и, даже, компьютерами. По определению СОМ является реализацией OLE.
Прочитать остальную часть записи »

Интерфейсы автоматизации, диспинтерфейсы

В блоке System Delphi объявлен также и IDispatch интерфейс, предназначенный для поддержки объектов автоматизации (Automation). Таким образом, любое приложение, предоставляющее свои внутренние методы другим приложениям, может осуществлять это через этот интерфейс.
Прочитать остальную часть записи »

Делегирование полномочий интерфейсов, свойство классов типа интерфейс

С помощью команды Implements можно делегировать полномочия одного или нескольких интерфейсов свойству в классе реализации интерфейса. Фактически делегирование означает, что класс-контейнер включает ссылку на другой класс, который реализует один или несколько интерфейсов.
Прочитать остальную часть записи »

Иерархия классов Delphi, поддерживающих технологию COM и OLE

Общая иерархия классов Delphi, поддерживающих СОМ технологию имеет следующий вид.

TInterfacedObject — Определен в модуле System. Реализует интерфейс
IUnknown. Используется для реализации объектов внутри приложений.
Прочитать остальную часть записи »

Видимость компонентов класса, особенности разделов класса

Одно из больших преимуществ ООП — это инкапсуляция и ее поддержка для скрытия данных. Если работать с полями напрямую или просто показывать их, в результате детали реализации становятся известными и могут не всегда корректно взаимодействовать с внешним миром. Гораздо лучше написать методы для доступа к полям объекта, что позволит добиться настоящей инкапсуляции и исключит возможность некорректной модификации данных объектов. Вместо прямого доступа к полям вызываются соответствующие методы.
Прочитать остальную часть записи »

Понятие интерфейса и его назначение в Delphi

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

Подготовка сообщений при исключениях

Использование ресурсных файлов
Одним из видов ресурсов Delphi являются таблицы строк. Ресурсы очень эффективно управляются системой и облегчают перевод программы на другой язык сообщений. В репозитории Delphi предусмотрен мастер для работы с ресурсами. Рассмотрим возможности использования ресурсов в виде таблицы строк для хранения текста сообщений об ошибках.
Прочитать остальную часть записи »

Обработка исключений при работе с базами данных

Одним из самых показательных примеров использования экземпляров исключений является известный пример работы с исключениями класса EDBEngineError при работе с базами данных. Особенно это касается баз данных Paradox и dBase, в которых не предусмотрено создание триггеров и ограничений. Последовательность действий следующая:
Прочитать остальную часть записи »

Технология обработки исключений в Delphi

Уровни обработки исключительных ситуаций

Программы, написанные на Delphi, имеют два уровня обработки исключений. Библиотека визуальных компонентов VCL имеет свой уровень обработки исключений, с которым в большинстве случаев и встречаются пользователи. Чаще всего исключения на этом уровне, так или иначе, обрабатываются, и далее пользователь может продолжить работу с программой. На этом уровне программистам предоставляется возможность включить в программу свои обработчики исключений. Возможные варианты обработчиков выше были уже рассмотрены.
Прочитать остальную часть записи »

Процедуры, возбуждающие исключения в Delphi

Возбуждение исключений

При создании приложений часто приходится проектировать блоки кода, которые могли бы возбуждать исключения. В Delphi для этих целей предусмотрены оператор Raise и несколько специальных процедур.

Оператор Raise

Для возбуждения исключений обычно используется оператор Raise. Синтаксис его использования следующий:

Raise [< объект>] [At < адрес>]

Прочитать остальную часть записи »

Использование экземпляров исключений, операторы On..Do в Delphi

За ключевым, словом Except обычно следует список обработчиков исключений состоящий из одного или нескольких операторов On..Do. Общий синтаксис конструкции Try..Except с операторами On..Do следующий:

Try
< операторы, которые могут вызвать исключений>
Except
On <исключение Класса1> Do [<оператор очистки, возможно составной>];
On <исключение класса2> Do [<оператор очистки, возможно составной>];
[Else
<операторы очистки по умолчанию, возможно составные>;] End;

Прочитать остальную часть записи »

Конструкции Try..Finally и Try..Except в Delphi

Программы Delphi имеют встроенную обработку исключений по умолчанию, которая в некоторых случая может оказаться достаточной. встроенная обработка исключений преследует, во-первых, получение более подробной информации об ошибке и/или месте ее возникновения и, во-вторых, включение собственного кода по ее обработке, если стандартная обработка не устраивает.
Прочитать остальную часть записи »

Исключения в Delphi, классы исключений

Исключения (exceptions) — это способ передачи информации об ошибке времени выполнения или о других исключительных ситуациях из того места, которое первым ее обнаружило, в код, предусмотренный для обработки таких ситуаций. В конечном итоге ошибки обусловлены неполной проработкой всех вариантов работы программы. В последующих версиях программы обнаруженные ошибки можно попытаться устранить, однако многое можно предусмотреть и сразу.
Прочитать остальную часть записи »

Событие OnMessage, перехватчики сообщений, перехваты Windows

Использование события OnMessage
Для обработки сообщений в приложении можно использовать событие Application.OnMessage. Как уже говорилось ранее, цикл обработки сообщений периодически просматривает содержимое поля FOnMessage. Фактически проверяется наличие обработчика у события OnMessage. С помощью этого обработчика можно перехватить или изменить обработку любых сообщений, кроме сообщений оперативной подсказки и (напомним, что сообщения, посланные функцией SendMessage, не попадают в цикл сообщений и также не могут быть перехвачены этим обработчиком этого события).
Прочитать остальную часть записи »

Механизм обработки сообщений в Delphi

Последовательность обработки сообщений в Delphi
Все классы Delphi имеют встроенный механизм обработки сообщений, называемый обработчики сообщений. Класс получает какое-либо сообщение и вызывает один из набора определенных методов в зависимости от полученного сообщения. Если соответствующий метод не определен, то вызывается заданный по умолчанию обработчик. Более подробно этот механизм работает следующим образом.
Прочитать остальную часть записи »

Рассылки сообщений, методы: Dispatch, Perform, Broadcast, NotifyControls, функции Windows API

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

procedure TForm1.WMMyCol(var Message: TMessage);
var Pan: TPanel;
begin
Pan:=pointer(Message.Lparam);
Pan.Color:=Message.WParam;
inherited;
end;

Прочитать остальную часть записи »

Сообщения Windows и их источники

Приложения Windows содержат различные типы объектов, которые взаимодействуют друг с другом посредством сообщений, посылаемых в ответ на события. За создание и передачу сообщений отвечает среда Windows.

Существует четыре основных источника сообщений. Приложение может получать сообщения от пользователя, от Windows, от самой себя и от других приложений.
Прочитать остальную часть записи »




Статистика