Определение всех topic'ов данного DDE-сервера

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Ответить
delphi-coder
Сообщения: 12
Зарегистрирован: 04 мар 2004, 15:35
Откуда: Moscow, Russia

Определение всех topic'ов данного DDE-сервера

Сообщение delphi-coder » 08 мар 2004, 10:16

Подскажите, можно ли определить все доступные топики у указанного DDE-сервера? Средствами паскаля\дельфи\системы\какими-то сторонними утилитами - не важно. В частности, интересует взаимодействие по DDE с MetaTrader'ом, но топики, которые я пока у него нашёл - это HIGH, LOW, ASK, BID и TIME. А мне бы ещё OPEN и CLOSE хотелось... Подозреваю что он их тоже может передать, но по какому-то другому топику... Если кто уже решал подобную проблему - откликнетесь в асю 282529094 плиз. Спасибо.

Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Сообщение Eugie » 08 мар 2004, 23:00

Любой DDE-сервер поддерживает System topic и несколько обязательных итемов в нем, которые предоставляют клиентам общую информацию о сервере. В частности, итем 'Topics' (в коде лучше использовать константу SZDDESYS_ITEM_TOPICS) возвращает список топиков (см. 'Supporting the DDE System Topic' в MSDN).

Вот как можно это сделать средствами Дельфи:

Код: Выделить всё

procedure TForm1.btnGetDataClick(Sender: TObject);
var data: PChar;
begin
  memData.Lines.Text := '';
  with DdeClientConv1 do begin
    ServiceApplication := edServer.Text;
    if SetLink(edServer.Text, 'SYSTEM') then begin
      data := RequestData(SZDDESYS_ITEM_TOPICS); 
      { Replace TABs (which usually used as string delimiters in DDE) on CRs. }
      AnsiTABtoCR(data);
      memData.Lines.Text := String(data);
      StrDispose(data);
    end
  end;
end;

Ответить