PDA

Просмотр полной версии : Определение всех topic'ов данного DDE-сервера



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

Eugie
08.03.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;