DDE

синтаксис: DDE(код  [ ,аргумент [ ,съобщение] ] )
описание:  Това е група команди за управление на
         DDE - обмена.

         име на сървъра- B4WDDESERVER
         име на топик-    B4WDDECONV

      код
      0 - гълта DDE- сървъра в Windows-клипбирда
           (без аргумент)
      1 - препраща резултата (sresult$) в DDE-резултат
           (без аргумент)
      3 - включва непрекъснат режим за DDE-прием
           (без аргумент)
      4 - изключва непрекъснатия режим за DDE-приема
           (без аргумент)
      5 - изпълнява команда от DDE в непрекъснат режим
           (аргумента е Б4 команда)
           и копира резултата в DDE-резултат
      6 - пресмята израз в непрекъснат режим
           (аргумента е стринг-израз)
           и  копира резултата в DDE-резултат.

      Тези команди работят когато е стартиран един-единствен
      екземплар на Б4, при което клиентите са други 
      Windows програми (различни от Б4).
      Ако два различни екземпляра от Б4 (стартирани на една машина)
      трябва да обменят данни, това може да стане с помощта на
      командите по-долу.
      Тяхното действие се основава на единна регистрация за всеки
      стартиран екземпляр (те трябва да се стартират от едно и също
      място) в специален регистър, който се намира в инсталационната
      директория на Б4 (B4WTHREADLIST.BSF)
      Регистрацията става с команда DDE(101), а дерегистрацията
      става с команда DDE(102). При обмен на данни,  един екземпляр
      изпраща на друг съобщения, използувайки индивидуалния му
      номер - в първа колона на регистъра .
      Индивидуалния номер възниква при старта на Б4 и се унищожава
      при край на работата. Следващия старт ще предизвиква друг
      индивидуален номер.
      Програмата може да научи индивидуалния номер на текущия
      екземпляр от Б4 чрез команда DDE(204) вж. по-долу.

   101: Записва индивидуалния номер на текущия екземпляр от
       Б4 в първа колона на регистъра
       C:\B4W\B4WTHREADLIST.BSF
       (формата е :идентификатор,дата,час,текуща таблица) 
       (регистъра се намира в инсталационната 
        директория на Б4).
   102:Отписва текущия екземпляр от регистъра.
   103:DeleteB4WThreadList (изтрива регистъра).
   104:ForseMessage -  възбужда (включва) приемника на съобщения.
   106:CheckThreadList;
       проверява дали всички регистрирани екземпляри
       в регистъра са живи и записва "YES" срещу всеки жив
       в четвърта колона.
   110:изпраща съобщението на адрес (адрес=аргумент)
       PostSimpleMessage(адрес,съобщение);
       Съобщението може да бъде

       1 - обнови изображението на текущия файл;
       2 - затвори и отвори (презареди) текущия файл;
       3 - запитване "жив ли си?"
       4 - отговор "да" на горното запитване

   200:Установява команда при ръчно затваряне на таблицата
       CommandOnDoneTable:=argument;

       пример :
       DDE(200,'копи  . @архивна_версия')

   201:Установява команда при получаване на съобщение
       тази команда записва номера на съобщение и командна
       линия към него. Има максимален брой такива 
       записвания - 50.

       пример :
       DDE(201, 18 ,'база PISMO')
       ако бъде получено съобщение 18, ще бъде изпълнена
       команда 'база PISMO'
       така в сървъра се запазва команден комплект който
       клиентите използуват, изпращайки заявки чрез 
       съобщения (виж по-долу код 203).

  202:Изтрий всички записвания за команди 
       при получаване на съобщение
  203:Изпълнява команда по номер на съобщение
       пример :

       DDE(203,1890989899,17)
       изпраща към екземпляр "1890989899" командно съобщение 17.
       Ако при получателя съществува команда записана за съобщение 17,
       тя ще бъде изпълнена.

  204:Запитване за собствения номер на екземпляр
         резултата се появява в променливата SRESULT$
         пример
         ....
         DDE(204)
         моя_номер SRESULT$
         ....

  205:Запитване за номера на последния клиент, 
         който е извикал команда
         резултата се появява в променливата SRESULT$
         Когато в сървъра се стартира програмата, заявена от клиент
         чрез изпратено съобщение DDE(203,...), 
         стартираната програма може да научи кой е предизвикал
         изпълнението й чрез следния участък

         пример: 
         ....
         DDE(205)
         клиент_номер SRESULT$
         ....
         след изпълнението на заявената команда
         този номер се заличава


   забележка:
   DDE (Dynamic Data Exchange) е начин две програми 
   в Windows да обменят данни.

   В този случай Б4 e сървър, а друга Windows програма
   - клиент.
   за да започне диалог, клиента трябва да запише при
   инициализацията в своя участък

   1. апликацията	B4W
   2. сървъра 		B4WDDESERVER
   3. разговора		B4WDDECONV

   или да използува клипборда за пренос на двете имена 
   (апликация/сървър - виж код 0)
 
   по-нататък клиента записва текстова заявка и
   иска нейния резултат
   заявката е Б4 команда
   при успех сървъра връща резултата като стринг

   Когато DDE-сървъра на Б4 получи заявка, 
   той стартира исканата команда (най-често програма).
   Тази програма трябва при изхода си да използува
   командите

   ...
   ...
   SRESULT$ x     /x е резултата - стринг или число/
   DDE(1)	/износ на резултат през DDE изхода/,

   за да препрати резултата от
   променливата SRESULT$  към DDE-клиента.

   Ако заявките на клиента са голямо множество и бързи
  за изпълнение, по-удобния начин е 
   1. да се включи команда, която отваря режим
       непрекъснат прием  DDE(3)
   2. заявките да преминават през кодове 5/6.
       при това Б4 спестява времето за възбуждане на нов
       процес и прозорец за доклад при всяко искане.
   3. след края на сесията да се включи команда, която
       затваря непрекъснатия прием DDE(4)
   


===================край=====================