logo search
лаб

Лабораторная работа 32. Обмен данными между программами с помощью DDE

DDE (Dynamic Data Exchange) – механизм обмена данными (текстовыми

строками) между программами. При этом одна из программ выступает в качестве сервера и по запросу предоставляет данные программам-клиентам. Технологию DDE

поддерживает большинство программ Windows, в том числе Microsoft Excel. В Delphi есть специальные компоненты для реализации DDE. Компонент DDEClientConv

(закладка System) используется в клиентских программах, компонент DDEServerConv (закладка System) – в серверных.

Рассмотрим взаимодействие клиентских программ созданных в Delphi с Microsoft Excel. В клиентской программе компонент DDEClientConv необходимо

связать с программой-сервером. Для этого нужно заполнить свойства DDEService – название программы-сервера и DDETopic – имя объекта, с которым происходит

обмен информацией (для Excel это будет имя листа в книге). Значения свойств можно заполнить автоматически, скопировав в буфер обмена любую ячейку листа, а затем вставив в режиме редактирования значения DDEService содержимое буфера с

помощью кнопки Paste Link.

Далее для пересылки строки

на

сервер

используется метод

function PokeData(Item: String;

Data:

PChar):

boolean. Функция

помещает строку Data в раздел данных Item в программу-сервер. Результат функции true, если пересылка произошла успешно. Отметим, что для Excel разделом

данных является ячейка, у

которой указывается

адрес

в

формате

R<номер строки>C<номер столбца>.

Обратите

внимание

на

необходимость

преобразования типа String в тип PChar.

 

 

 

 

Пример: DDEClientConv1.PokeData(’R2C3’, Pchar(Edit1.Text));

Чтобы получить информацию от сервера

используется

метод

function RequestData(Item:

String):

PChar.

Функция возвращает

строку данных, которая находится в программе-сервере в заданном разделе данных.

В Delphi имеется также компонент DDEClientItem, который связывает

клиентскую программу с конкретным разделом данных в программе-сервере. У компонента DDEClientItem необходимо заполнить поля DDEConv – указатель на

компонент DDEClientConv и DDEItem – имя раздела данных. После этого не

требуется постоянно вызывать методы для получения информации от сервера. Информация при изменении раздела данных в серверной программе будет автоматически обновляться в свойствах Lines и Text объекта DDEClientItem.

Также при изменении раздела данных возникает событие OnChange, которое можно обработать.