Чтение онлайн

на главную - закладки

Жанры

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

 xtyp_Poke:

begin

if Form1.AcceptPoke(HSz2, Fmt, Data) then CallbackProc := dde_FAck;

end;

{ Клиент сделал запрос для старта цикла-уведомления. Имейте в виду, что мы организуем "горячий" цикл. Устанавливаем флаг Advising для указания открытого цикла, который будет проверять данные на предмет их изменения.}

 xtyp_AdvStart:

begin

ItemNum := Form1.MatchTopicAndItem(HSz1, HSz2);

if ItemNum > 0 then begin

if NumAdvLoops < MaxAdvisories then begin

{
Произвольное число }

Inc(NumAdvLoops);

Form1.Advising[ItemNum] := True;

CallbackProc := 1;

end;

end;

end;

{ Клиент сделал запрос на прерывание цикла-уведомления.}

 xtyp_AdvStop:

begin

ItemNum := Form1.MatchTopicAndItem(HSz1, HSz2);

if ItemNum > 0 then begin

if NumAdvLoops > 0 then begin

Dec(NumAdvLoops);

if NumAdvLoops = 0 then Form1.Advising[ItemNum] := False;

CallbackProc := 1;

end;

end;

end;

 end; { Case CallType }

end;

{ Возращает True, если данные Topic и Service поддерживаются этим приложением. В противном случае возвращается False.}

function TForm1.MatchTopicAndService(Topic, Service: HSz): Boolean;

begin

 Result := False;

 if DdeCmpStringHandles(TopicHSz, Topic) = 0 then

if DdeCmpStringHandles(ServiceHSz, Service) = 0 then Result := True;

end;

{ Определяем, один ли Topic и Item поддерживается этим приложением. Возвращаем номер заданного элемента (Item Number) (в пределах 1..NumValues), если он обнаружен, и ноль в противном случае.}

function TForm1.MatchTopicAndItem(Topic, Item: HSz): Integer;

var I : Integer;

begin

 Result := 0;

 if DdeCmpStringHandles(TopicHSz, Topic) = 0 then

for I := 1 to NumValues do

if DdeCmpStringHandles(ItemHSz[I], Item) = 0 then

Result := I;

end;

{ Отвечаем
на запрос wildcard-соединения (дословно - дикая карта, шаблон). Такие запросы возникают всякий раз, когда клиент пытается подключиться к серверу с сервисом или именем топика, установленного в 0. Если сервер обнаруживает использование такого рода шаблона, он возвращает дескриптор массива THSZPair, содержащего найденные по шаблону Service и Topic.}

function TForm1.WildConnect(Topic, Service: HSz; ClipFmt: Word): HDDEData;

var

 TempPairs: array [0..1] of THSZPair;

 Matched : Boolean;

begin

 TempPairs[0].hszSvc:= ServiceHSz;

 TempPairs[0].hszTopic:= TopicHSz;

 TempPairs[1].hszSvc:= 0; { 0-завершает список }

 TempPairs[1].hszTopic:= 0;

 Matched := False;

 if (Topic= 0) and (Service = 0) then Matched := True { Шаблон обработан, элементов не найдено }

 else

if (Topic = 0) and (DdeCmpStringHandles(Service, ServiceHSz) = 0) then Matched := True

else if (DdeCmpStringHandles(Topic, TopicHSz) = 0) and (Service = 0) then Matched := True;

 if Matched then

WildConnect := DdeCreateDataHandle(Inst, @TempPairs, SizeOf(TempPairs), 0, 0, ClipFmt, 0)

 else WildConnect := 0;

end;

{ Принимаем и проталкиваем данные по просьбе клиента. Для демонстрации этого способа используем только значение DataItem1, изменяемое Poke.}

function TForm1.AcceptPoke(Item: HSz; ClipFmt: Word; Data: HDDEData): Boolean;

var

 DataStr: TDataString;

 Err: Integer;

Поделиться:
Популярные книги

Стеллар. Трибут

Прокофьев Роман Юрьевич
2. Стеллар
Фантастика:
боевая фантастика
рпг
8.75
рейтинг книги
Стеллар. Трибут

Его огонь горит для меня. Том 2

Муратова Ульяна
2. Мир Карастели
Фантастика:
юмористическая фантастика
5.40
рейтинг книги
Его огонь горит для меня. Том 2

На границе империй. Том 9. Часть 4

INDIGO
17. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 4

Наследник

Кулаков Алексей Иванович
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
8.69
рейтинг книги
Наследник

Совершенно несекретно

Иванов Дмитрий
15. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Совершенно несекретно

Ваше Сиятельство 2

Моури Эрли
2. Ваше Сиятельство
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Ваше Сиятельство 2

Прометей: каменный век II

Рави Ивар
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Прометей: каменный век II

Единственная для темного эльфа 3

Мазарин Ан
3. Мир Верея. Драконья невеста
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Единственная для темного эльфа 3

Жандарм

Семин Никита
1. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
4.11
рейтинг книги
Жандарм

Долгий путь домой

Русич Антон
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
6.20
рейтинг книги
Долгий путь домой

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле

Наследие Маозари 6

Панежин Евгений
6. Наследие Маозари
Фантастика:
попаданцы
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 6

Я еще не барон

Дрейк Сириус
1. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я еще не барон

Лолита

Набоков Владимир Владимирович
Проза:
классическая проза
современная проза
8.05
рейтинг книги
Лолита