Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修复Delphi的协议引擎?_Delphi_Protocols_Quickfix_Fix Protocol - Fatal编程技术网

修复Delphi的协议引擎?

修复Delphi的协议引擎?,delphi,protocols,quickfix,fix-protocol,Delphi,Protocols,Quickfix,Fix Protocol,有人能推荐一个用于Delphi的修复引擎(商业或开源)吗 >可以用Delphi使用QuyFixt?< /P> < P> QueQuebug是C++项目。 Python和Ruby使用SWIG将C++类暴露为本地Python和Ruby类。 .NET包装器听起来像是C++和C代码的混合体。 < >不可能直接在Delphi中导入C++类。您必须使用“扁平API”转换,将所有C++方法暴露为简单的C声明,以便在Delphi单元中导入外部结构和函数。 据我所知,目前还没有类似QuickFIX的“平面A

有人能推荐一个用于Delphi的修复引擎(商业或开源)吗


>可以用Delphi使用QuyFixt?< /P> < P> QueQuebug是C++项目。

Python和Ruby使用SWIG将C++类暴露为本地Python和Ruby类。

.NET包装器听起来像是C++和C代码的混合体。 < >不可能直接在Delphi中导入C++类。您必须使用“扁平API”转换,将所有C++方法暴露为简单的C声明,以便在Delphi单元中导入外部结构和函数。 据我所知,目前还没有类似QuickFIX的“平面API”,也没有能够生成Delphi代码的SWIG版本。您必须在C++中编写自己的包装器,或者在Delphi中编写自己的FIX实现。


我所知道的Delphi的唯一修复库是一个,它在几年前确实存在,但我不确定它是否仍在销售/维护中,它们似乎只维护一个DotNet版本。在任何情况下都值得向他们询问价格和可用性。

将协议与Delphi集成的一种方法是构建.Net或Java桥,例如:

  • 使用.Net C#实现构建一个小型应用程序,以便与修复端通信
  • 然后通过SOAP web服务公开这个.Net应用程序的方法(甚至对象)
  • 使用Delphi的web服务客户端代码生成器导入SOAP WSDL
  • 从Delphi端访问web服务

    • 这可能比其他任何东西都更像是一种黑客行为,但是您可以通过使用Delphi中的Python QuickFIX绑定。不过这需要很多层(从Delphi到Python再到C++)

      Python是一种易于使用和学习的语言,调用和创建Python对象(或假装为Python对象的本机C包装器)并直接从Python4Delphi API调用它们也很容易

      除此之外,正如ABouchez所说,构建过程(平面)API对您来说可能很少。我不会编写一百万个函数,而是只编写我需要的函数,然后在VC++DLL中实现这些简单函数:

         QuickFixInit;
         QuickFixCleanup;
         handle := QuickFixLoadFile(filename)
         QuickFixSaveFile(handle)
         handle2 := QuickFixGetObjectHandle(handle,index,...); 
         QuickFixModifyObjectProperty(handle2, propertyname, propertyvalue );
         QuickFixExecuteSomeAction( handle2, actionname, param1,param2,param3 );
      
      以上只是给你的味道。我对内部API一无所知,但我在上面向您展示的是,编写包装器不需要100%符合API。你可能(如果你知道C/C++)写一个功能包装,它做你需要的,然后导出它,链接到一个DLL,然后将QuiFix.dll导入到Python中,很少(2-4个小时的专家时间)工作,如果你知道Visual C++足够好的话,可以编写一些实例化C++类的简单的C风格(非OOP)函数。并调用C++方法。< /P>

      可以通过C++的Builder包(BPL)将Que+API暴露到Delphi中,但需要(a)需要一些源修改,(b)C++中的C++代码,或者它的依赖性,可能不在C++ Builder中建立而不需要进行重大修改。

      < P>查看<强> B2BIT固定天线< /强>。有两种可能的选择:

      • 固定天线C++具有ANSI C接口,可用于Delphi(包中有样本)

      • FIX Antenna.NET可以在Delphi.NET中使用(包中还有一个示例;《程序员指南》也包含Delphi.NET示例)


      如果需要更多的细节,请直接与我联系。

      根据:“API的C++、.NET、Python和Ruby都可用。”从那个列表中,C++ API是最有用的。COSmin,C++API使用类和命名空间,这不是简单的导入到非C++环境中。(如果C++环境与DLL的开发环境不相同,它们也不太重要,也不必导入到C++环境中。)