是否可以使用新的/不同版本的Indy在Delphi XE中重新编译DataSnap包?

时间:2011-06-27 18:22:58

标签: delphi packages indy datasnap

好的 - 我们有一个有趣的问题。

一些背景知识:

  1. 我们的主要应用程序使用Indy 10.但是,我们采用Indy 10 源代码并修复它中的错误,重新编译并安装我们自己的Indy集 组件。

  2. 我们正在迁移到Delphi XE并希望开始使用DataSnap。

  3. DataSnap需要Indy的“官方发货”版本 与我们的定制版Indy不兼容。

  4. 我们的DataSnap服务器将是独立的应用程序,但自从我们开始 在IDE中安装了我们自己的Indy,我们无法“跨越溪流”。

  5. 好的,因此,我们无法使用Delphi XE的DataSnap 因为这种兼容性问题,请使用框。

    所以我的问题是:

    是否可以使用新的/不同版本的Indy在Delphi XE中重新编译DataSnap包?

    感谢您的意见。

2 个答案:

答案 0 :(得分:3)

普遍的看法是不,这是不可能的,因为并非所有来源都是由Embarcadero提供的,其中一些来源依赖于Indy的发布。 (这对最终用户来说非常令人沮丧,因为Delphi附带的Indy版本已经过时了,有时当时选择的版本不一定非常好。)

参见相关的SO问题: Is it possible to use Indy 10.5.8.0 in Delphi XE and DataSnap?

另见Indy项目页面: http://www.indyproject.org/Sockets/Docs/indy10Installation.de.aspx 其中说明:

  

注意:在D / CB / RAD 2009+中,DataSnap使用   Indy 10内部。安装新的   Indy的版本将呈现DataSnap   无法使用,因为它无法使用   加载Indy包。   DataSnap是针对Indy编译的   随IDE一起提供的软件包   无法通过结束重新编译DataSnap   用户。如果需要使用DataSnap,   那么你需要保持   原装Indy 10包用于   DataSnap项目。

据说下一个版本应该允许更容易更新Indy。

答案 1 :(得分:2)

如果包含所有DataSnap源,当然可以使用某种PE可执行分析程序来检测BPL中使用的类和单元(因为BPL只是自定义的DLL)。 GExperts提供了一个非常简单易用的方法。

在BPL中,来自GExperts \ PE Information的导出列表行的格式类似于 @xp $ @ [nn] [UnitName] @ [TypeName] (对于类型)和 @ [ UnitName] {@ [Type>]} @ [单位全局元素,如程序或变量] (其余部分)。

您可以将该列表保存到文件和GREP以获取BPL上使用的单位列表。

真实例子(vcl140.bpl):

  • @ $ xp $ 11Forms @ TForm
  • @ Appevnts @ TCustomApplicationEvents @激活
  • @ @器--Clipbrd剪贴板