404___________________________________________ГлаваМ

6.5.2 Установление контакта с сервером                   •

Начнем рассмотрение с компонента DdeServerConv, который располагается Д
на форме приложения-сервера. Его единственное свойство — имя Name. Это и^г
является именем темы. Его должен знать клиент при установлении контакта с се^И
вером. Некоторые методы компонента DdeServerConv мы рассмотрим позднее^И
следующем разделе, а теперь обратимся к компоненту DdeClientConv, котор^^И
располагается на форме приложения-клиента и обеспечивает установление и Р^Н
рыв контакта с сервером.                                               ^И

Два свойства компонента DdeClientConv — DdeService и DdeTopic определив
ют имена сервера и темы, соответствующих намеченному контакту. Имя серв^Н
ра — это имя приложения-сервера, а имя темы — имя одного из компонентов Dd^B
ServerConv, расположенных на сервере. В процессе проектирования эти свойстве
задавать не обязательно, поскольку они могут быть установлены во время выпо^Н
нения методом SetLink. Этот метод описан следующим образом:            ^Ш

bool SetLink(const System::AnsiString Service,                       ^H
const System::AnsiString Topic);                        ^B

Параметры метода Service и Topic устанавливают соответственно значен^И
свойств DdeService и DdeTopic. Установить значения этих свойств во время в^И
полнения прямым присваиванием невозможно.                            ^Н

Способ установления контакта с сервером во время выполнения зависит ^В
значения свойства ConnectMode, определяющего режим соединения. Это свойст^И
может иметь значение ddeManual — ручной или ddeAutomatic — автомати^^И
ский. При автоматическом режиме SetLink не только задает значения DdeServi^H
и DdeTopic, но и устанавливает сам контакт. При ручном режиме метод SetLii^H
после установки значений DdeService и DdeTopic очищает элементы от прошл(^И
информации, но самого соединения не устанавливает. Контакт с сервером в это^В
случае должен устанавливаться методом OpenLink, не имеющим параметров. ^И

Если сервер в момент попытки установить контакт запущен, то контакт уст^В
навливается описанными выше методами. Если это не удается, то делается попья^И
ка запустить программу, путь и имя которой указаны в свойстве ServiceApplical
on. Если в этом свойстве ничего не указано или запуск не удался, то метод Op.ei
Link возвращает false.

Закрыть контакт с сервером можно методом CloseLink. Этот метод разрыва
связь с сервером и очищает значения свойств DdeService и DdeTopic.

Исходя из сказанного выше, наиболее простой способ установления связи в
шего приложения с сервером (если приложение будет обмениваться информащк
только с одним сервером) заключается в следующем. Во время проектирован!
надо установить требуемые значения свойств DdeService и DdeTopic, а затем а
дать свойство ConnectMode = ddeAutomatic. Если сервер в данный момент зап
щен или он доступен, то с сервером установится связь. Доступность в данном ел
чае означает, что выполняемый файл сервера находится в том же каталоге, в кот
ром находится ваше приложение, или в свойстве ServiceApplication указан BI
полняемый файл сервера с полным путем к нему и с указанием типа файла (расш:

рения). В этом случае свойство ConnectMode сможет установиться в ddeAutom,
tic. В противном случае вам будет выдано предупреждение о невозможности KOI
такта.                                                                 )

Если все прошло нормально, то в дальнейшем при выполнении приложением
связь с сервером будет устанавливаться автоматически. Если в момент запуск^!
приложения сервер уже запущен, контакт установится сразу. Если же сервер вЯ
запущен к моменту запуска вашего приложения, но его выполняемый файл Дост^И
пен для приложения (в указанном выше смысле), то сервер автоматически запу(Д
тится и с ним будет установлен контакт. В обоих случаях вам не надо будет забот^И
ться о контакте, т.е. не надо будет применять методы SetLink или OpenLink. •