
- •Содержание
- •2 Вопросы для текущего контроля знаний по темам 70
- •Введение
- •1 Разработка приложений с элементами системного программирования на основе использования технологий межпрограммного обмена данными
- •1.1 Лабораторная работа №1. Обмен данными между потоками с использованием сообщения wm_copydata
- •Краткие теоретические сведения
- •1.1.2 Ход выполнения работы
- •1.1.3 Задание на лабораторную работу 1
- •Варианты индивидуального задания
- •1.1.4 Контрольные вопросы к лабораторной работе 1
- •1.2 Лабораторная работа №2. Обмен данными между приложениями с использованием технологии динамического обмена данными – Dynamic Data Exchange (dde)
- •1.2.1 Краткие теоретические сведения
- •Глобальные данные
- •Посылка и прием данных
- •Завершение сеанса
- •Компонент tddeServerConv
- •Компонент tddeServerItem
- •Компонент tddeClientItem
- •1.2.2. Ход выполнения работы
- •1.2.3 Задание на лабораторную работу 2
- •1.2.4 Контрольные вопросы к лабораторной работе 2
- •1.3 Лабораторная работа №3. Обмен данными между приложениями с использованием технологии динамического обмена данными с помощью файлов, отображаемых в память
- •1.3.1 Краткие теоретические сведения Создание объекта файлового отображения
- •Совместное использование отображаемых данных
- •1.3.2 Ход выполнения работы
- •1.3.3 Задание на лабораторную работу 3
- •1.3.4 Контрольные вопросы к лабораторной работе 3
- •1.4 Лабораторная работа №4. Обмен данными между приложениями с использованием технологии динамического обмена данными с помощью сокетов
- •1.4.1 Краткие теоретические сведения Сокеты
- •1.4.2 Ход выполнения работы
- •1.4.3 Контрольные вопросы к лабораторной работе 4
- •1.5 Лабораторная работа №5. Обмен данными между приложениями с использованием технологии динамического обмена данными с помощью именованных каналов
- •1.5.1 Краткие теоретические сведения Каналы
- •1.5.2 Ход выполнения работы
- •1.5.3 Контрольные вопросы к лабораторной работе 5
- •1.6 Лабораторная работа №6. Использование технологии сом при разработке приложений в Delphi. Создание и использование внутреннего сервера
- •1.6.1 Краткие теоретические сведения
- •1.6.2 Ход выполнения работы
- •1.6.3 Контрольные вопросы к лабораторной работе 6
- •2 Вопросы для текущего контроля знаний по темам
- •Список литературы
- •107/2009. Підп. До друку 25.12.09. Формат 60 х 84/8.
- •84313, М. Краматорськ, вул. Шкадінова, 72.
Компонент tddeClientItem
Этот компонент представляет элемент данных на клиентской стороне. После установления контакта с сервером нужно присвоить свойству:
property DDEConv: TDDEClientConv;
указатель на объект, соответствующий появившемуся контакту, а свойству:
property DDEItem: String;
имя элемента данных сервера. В этом случае все изменения будут отслеживаться.
Организация данных клиентского приложения сходна с той, которая принята на сервере:
property Text: String;
property Lines: TStrings;
Свойство Text является подмножеством Lines и содержит первую строку этого набора.
Изменения данных на сервере отражаются в компоненте TDDEClientItem. В этот момент происходит событие
property OnChange: TNotifyEvent;
В обработчике этого события и нужно предусмотреть реакцию на изменение данных — пересчет формулы, обновление текста и т. п. Принципы работы с DDE отражены в примере DDEIPC. Приложение-сервер запускает таймер и с установленным периодом формирует текстовые строки со значением текущего времени и количества свободной памяти. Эти строки являются элементами данных соответствующих тем DDE. На форме клиента находятся две кнопки — Time и Memory. При их нажатии происходит попытка входа в соответствующий контакт. Если она была успешной, кнопка утапливается, и на ней отображается время или количество свободной памяти. При отжатии кнопки контакт разрывается.
В рассмотренном ниже примере приложение-клиент вступает в контакт с сервером InfoServer на тему TimeTopic. При нажатии КНОПКИ TimeButton связь устанавливается, при отпускании — разрывается. Метод TimeConvOpen, служащий обработчиком события OnOpen, присваивает значения именам темы и элемента данных:
const
InfoServer = 'infoserv';
TimeConversation = 'TimeTopic';
ServerTimeItem = 'TimeItem';
SCannotStart = 'Cannot start conversation';
procedure TForm1.TimeButtonClick(Sender: TObject);
begin
if TimeButton.Down then
begin
if not TimeConv.SetLink(InfoServer,
TimeConversation) or not TimeConv.OpenLink then begin
MessageDlg(SCannotStart, mtError, [mbOk], 0); TimeButton.Down := False;
end
end
else TimeConv.CloseLink;
end;
procedure TForml.TimeConvOpen(Sender: TObject);
begin
ClientTimeItem.DDEConv := TimeConv;
ClientTimeItem.DDEItem := ServerTimeItem;
end;
К недостаткам DDE нужно отнести сложность и относительно высокие накладные расходы со стороны системы. К тому же фирма Microsoft предупредила, что может отказаться от поддержки DDE следующих версиях своих операционных систем. Но на современном этапе это — проверенный способ взаимодействия как между двумя вашими задачами, так и со сторонними продуктами.
1.2.2. Ход выполнения работы
-
Ознакомиться с краткими теоретическими сведениями, текстом учебного проекта и материалами к данной лабораторной работе.
-
Разработать серверное приложение, в котором осуществляется вызов изученных в соответствии с индивидуальным заданием к первой лабораторной работе функций, обработка и представление в понятном для пользователя виде возвращаемых ними результатов или достигаемых с их помощью эффектов (изменений режимов работы объектов операционной системы или пользовательского интерфейса).
-
Разработать клиентское приложение, в котором будет осуществляться прием и отображение данных, получаемых по запросу от сервера.
-
Организовать обмен данными, возвращаемыми Вашими функциями Windows API (см. индивидуальное задание к лабораторной работе №1), между серверным и клиентским приложениями с использованием компонентов TDDEClientConv и TDDEClientItem (для клиента) и TDDEServerConv и TDDEServerItem (для сервера).
-
(Факультативное задание) Разработать серверное и клиентское приложения, реализующие ту же задачу путем посылки и обработки сообщений вида WM_DDE_XXX.