修复Delphi的协议引擎?
有人能推荐一个用于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使用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++环境中。)