Is it possible to recompile the DataSnap packages in Delphi XE with a new/different version of Indy?

匆匆过客 提交于 2019-11-30 18:47:36
Darian Miller

The common belief is No, that's not possible due to not all sources being provided by Embarcadero and some of these sources are reliant on the build of Indy as shipped. (Which is extremely frustrating to end users as the version of Indy that ships with Delphi is out of date relatively quickly and sometimes the version selected at the time is not necessarily a very good one.)

See related SO question: Is it possible to use Indy 10.5.8.0 in Delphi XE and DataSnap?

Also see the Indy project page: http://www.indyproject.org/Sockets/Docs/indy10Installation.de.aspx which states:

Note: In D/CB/RAD 2009+, DataSnap uses Indy 10 internally. Installing a new version of Indy will render DataSnap unusable, as it will not be able to load the Indy packages anymore. DataSnap is compiled against the Indy packages that ship with the IDE, and DataSnap cannot be recompiled by end users. If you need to use DataSnap, then you will need to maintain the original Indy 10 packages for use in DataSnap projects.

It's been said that the next version should hopefully allow for easier updates of Indy.

If all DataSnap source is included, is of course possible using some kind of PE executable analisys program to detect which classes and units are used in BPL (as BPLs are just customized DLLs). An very easy one to use is provided with GExperts.

In BPLs, the exports list lines from GExperts\PE Information have an format like @xp$@[nn][UnitName]@[TypeName] (for types) and @[UnitName]{@[Type>]}@[Unit global element like procedures or variables] (for the rest).

You can save that list to a file and GREP to get an list of Units used on a BPL.

Real Examples (vcl140.bpl):

  • @$xp$11Forms@TForm
  • @Appevnts@TCustomApplicationEvents@Activate
  • @Clipbrd@Clipboard
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!