基于Delphi的RTD客户端

基于Delphi的RTD客户端,delphi,com,rtd,Delphi,Com,Rtd,如何在Delphi上创建RTD客户端?我不知道如何开始,我需要像Excel电子表格一样获取值,比如 =RTD("gartle.rtd",,"YahooFinanceWatchList","AAPL","Open") 这里说:为了向Excel提供RTL服务器,您需要实现该接口,根据该逻辑,您应该能够自己使用默认COM方法实例化现有的实现。(YMMV)正如Stijn所提到的,您需要创建一个实现IRtdServer的COM自动化对象。德尔福对此的声明如下: // ******************

如何在Delphi上创建RTD客户端?我不知道如何开始,我需要像Excel电子表格一样获取值,比如

=RTD("gartle.rtd",,"YahooFinanceWatchList","AAPL","Open")

这里说:为了向Excel提供RTL服务器,您需要实现该接口,根据该逻辑,您应该能够自己使用默认COM方法实例化现有的实现。(YMMV)

正如Stijn所提到的,您需要创建一个实现IRtdServer的COM自动化对象。德尔福对此的声明如下:

// *********************************************************************//
// Interface: IRTDUpdateEvent
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {A43788C1-D91B-11D3-8F39-00C04F3651B8}
// *********************************************************************//
IRTDUpdateEvent = interface(IDispatch)
  ['{A43788C1-D91B-11D3-8F39-00C04F3651B8}']
  procedure UpdateNotify; safecall;
  function Get_HeartbeatInterval: Integer; safecall;
  procedure Set_HeartbeatInterval(plRetVal: Integer); safecall;
  procedure Disconnect; safecall;
  property HeartbeatInterval: Integer read Get_HeartbeatInterval write Set_HeartbeatInterval;
end;

// *********************************************************************//
// Interface: IRtdServer
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {EC0E6191-DB51-11D3-8F3E-00C04F3651B8}
// *********************************************************************//
IRtdServer = interface(IDispatch)
  ['{EC0E6191-DB51-11D3-8F3E-00C04F3651B8}']
  function ServerStart(const CallbackObject: IRTDUpdateEvent): Integer; safecall;
  function ConnectData(TopicID: Integer; var Strings: PSafeArray; var GetNewValues: WordBool): OleVariant; safecall;
  function RefreshData(var TopicCount: Integer): PSafeArray; safecall;
  procedure DisconnectData(TopicID: Integer); safecall;
  function Heartbeat: Integer; safecall;
  procedure ServerTerminate; safecall;
end;

你有什么例子说明如何做到这一点吗?@David:没错,但是Excel是如何从
“gartle.rtd”
获取指向实现IRtdServer的对象的实时接口指针的呢?如果Excel这样做(通过普通的COM调用),我们也可以这样做,但我认为我没有RTD提供程序在这里检查@GPGomes,你能打开regedit并在
HKEY\u CLASSES\u ROOT
中搜索
gartle.rtd
吗?我没有读清楚你的答案。看来你已经知道了。很抱歉无论如何,大概可以创建这些COM对象中的一个。但这将是一种非常模糊的获取实时财务信息的方法!这其中的哪一部分你在挣扎?我想知道你是否了解COM?如果不是,那么你需要在跑步之前学会走路。我想知道的一件事是,你使用了两倍于客户这个词。你是说服务器吗?我对COM不太了解,我正在学习。。。我的意思是真正的客户机,我正试图从应用程序中获取数据,就像Excel(正如我发布的功能一样)Excel是客户机一样。在您的示例中,
gartle.rtd
是服务器。你真的是说客户吗?那就不难了。您需要创建COM自动化对象的实例并调用其方法。这些都有文件记录。然而,你可能找到了解决问题的错误方法。使用webservice接口提取实时股票市场信息要容易得多。真的不需要你在这里假装很出色。请阅读对问题的评论。Asker想做一个客户端而不是服务器。