Определение всех topic'ов данного DDE-сервера
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 12
- Зарегистрирован: 04 мар 2004, 15:35
- Откуда: Moscow, Russia
Подскажите, можно ли определить все доступные топики у указанного DDE-сервера? Средствами паскаля\дельфи\системы\какими-то сторонними утилитами - не важно. В частности, интересует взаимодействие по DDE с MetaTrader'ом, но топики, которые я пока у него нашёл - это HIGH, LOW, ASK, BID и TIME. А мне бы ещё OPEN и CLOSE хотелось... Подозреваю что он их тоже может передать, но по какому-то другому топику... Если кто уже решал подобную проблему - откликнетесь в асю 282529094 плиз. Спасибо.
Любой 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;