
- •Тема 6. Особенности разработки пакетов прикладных программ
- •Определение ппп и его составные части
- •. 2.16. Вариант классификации ппп по функциональному назначению
- •Иными словами, функциональная связь в модели предметной области представляется:
- •Способы применения ппп и задача управления процессами
- •Способы динамического запуска вычислительных процессов
- •. Рис. 2.18. Запуск внешней программы с замещением родительского процесса
- •Например, оператор
- •If (execlp("f1.Ехе","Fl.Exe", null)) ShowMessage ("Программа Fl.Exe не выполнена");
- •Реализация динамического обмена данными методом dde
- •Таким образом, взаимодействие dde может выполнять следующие операции:
- •Во время же выполнения программы эти свойства могут быть установлены методом SetLink, который описывается следующим образом:
- •Основы архитектуры сом
- •Основы автоматизации ole
- •Элементы управления ActiveX
- •Организация приложений с несколькими потоками
- •Заголовочный файл Unit2.H:
Реализация динамического обмена данными методом dde
Динамический обмен данными (Dynamical Data Exchange — DDE) — это технология, появившаяся на заре Windows, но сохраняющая свое значение и до сих пор, поскольку предоставляет удобный способ обмена данными между программами. Смысл данной технологии в том, что приложения обмениваются текстовыми данными через глобальную (внешнюю) память во время своего выполнения. При этом связь между двумя программами можно установить таким образом, что изменения в одном приложении будут отражаться во втором. Например, если Вы меняете число в электронной таблице, то во втором приложении данные обновятся автоматически и отобразят изменения. Кроме того, с помощью DDE можно из своего приложения управлять другими приложениями такими, как Word for Windows, Report Smith, Excel и др. (рис. 2.20).
Рис. 2.20. Идея динамического обмена данными между отдельными процессами
В диалоге программ одна, инициирующая диалог, называется клиентом, а другая, отвечающая на сообщения клиента — сервером. Очевидно, что одно и тоже приложение может быть одновременно и сервером, и клиентом. Диалог ведется на заданную тему (topic). Данные, передаваемые от одной программы к другой, называются элементами данных (items). В диалоге могут также передаваться серверу некоторые команды — макросы (macros). Этих основных понятий: клиент-сервер, тема, элемент данных и макрос достаточно, чтобы строить приложения, основанные на DDE.
Таким образом, взаимодействие dde может выполнять следующие операции:
передача клиенту данных от сервера по инициативе клиента;
передача клиенту данных от сервера при их обновлении;
передача данных от клиента к серверу;
передача команд (макросов) от клиента к серверу;
установка клиентом данных на сервере.
Всю сложную задачу обработки в процессе диалога множества сообщений Windows берут на себя, как правило, системы ООП, инкапсулируя все необходимые процедуры в соответствующих компонентах библиотек.
Так, например, для систем C++Builder и Delphi - это четыре компонента, расположенных в библиотеке на странице System: DdeClientConv, DdeClientltem, DdeServerConv и DdeServerltem. Первые два из них организуют работу клиента, а два вторые — работу сервера.
Для построения DDE-сервера в проекте обычно используется один объект TDdeServerConv и один или более TDdeServerItem (рис.2.21).
Рис.2.21: Пример DDE-сервера в среде Delphi
Назначение объекта TDdeServerConv - общее управление DDE и обработка запросов от клиентов на выполнение макроса. Его единственное свойство — имя Name. Это имя является именем темы, которое должен знать клиент при установлении и разрыве контакта с сервером. Выполнение макроса организуется в обработчике события OnExecuteMacro, например:
procedure TDdeSrvrForm.doMacro(Sender: TObject; Msg: TStrings); var Text: string; begin Text := ''; if Msg.Count > 0 then Text := Msg.Strings[0]; MessageDlg ('Executing Macro - ' + Text, mtInformation, [mbOK], 0); end;
Аналогично серверу для построения DDE-клиента, в программе обычно используется один объект TDdeClientConv и один и более связанных с ним TDdeClientItem (рис. 2.22.).
Рис. 2.22: Пример DDE-клиента в среде Delphi
TDdeClientConv служит для установления связи с сервером и общим управлением DDE-связью. Связь с сервером можно установить как во время дизайна (причем двумя способами), так и во время выполнения программы.
Первый способ - заполнить вручную такие необходимые свойства компонента, как: DdeService, DdeTopic и ServiceApplication. Параметры метода Service и Topic устанавливают соответственно значения свойств DdeService и DdeTopic. Установить значения этих свойств во время выполнения прямым присваиванием невозможно.
Второй вариант – с помощью специального диалога для определения DDE-связи (во время дизайна щелкните дважды на одно из первых двух свойств в Инспекторе Объектов рис.2.23 )
Рис. 2.23: Диалог для установления связи с DDE-сервером (Report Smith).
Укажите в диалоге имена DDE Service и DDE Topic. Эти имена можно узнать из документации по тому DDE-серверу, с которым Вы работаете. В случае DDE-сервера, созданного на Delphi, это имя программы (без .EXE) и имя объекта TDdeServerConv. В этом же диалоге есть специальная кнопка Past Link для установления связи через Clipboard. Ей можно воспользоваться, если Вы запустили DDE-сервер, сохранили каким-то образом информацию о связи и вошли в этот диалог.
Свойство ServiceApplication заполняется в том случае, если в поле DdeService содержится имя, отличное от имени программы, либо если эта программа не находится в текущей директории. В этом поле указывается полный путь и имя программы без расширения (.EXE). При работе с Report Smith здесь нужно указать, например: C:\RPTSMITH\RPTSMITH.