是否可以在Delphi XE和DataSnap中使用Indy 10.5.8.0?

时间:2010-12-30 23:40:58

标签: delphi indy delphi-xe indy10

案例

我正在尝试将INDY更新为我的Delphi XE(Update 1)的最新版本,所以我从indy.fulgan.com/ZIP下载了最新的INDY10文件(Indy_4545.zip)。

软件包编译成功,我现在甚至可以在about框对话框中看到新版本10.5.8.0,但在IDE重启后我得到一条消息说:

No se encuentra el punto de entrada del procedimiento @ Idhttp @ TIdCustomHTTP @ GetRequestHeaders $ qqrv en la bibliotecadevínculosdinámicosIndyProtocols150.bpl。

我的免费英语翻译:

在动态链接库IndyProtocols150.bpl上找不到过程@ Idhttp @ TIdCustomHTTP @ GetRequestHeaders $ qqrv的入口点。

在对新旧IdHTTP.pas进行快速比较后,我发现TIdCustomHttp类有很多变化,包括重命名某些方法

  • GetResponseHeaders to GetResponse
  • GetRequestHeaders to GetRequest
  • SetRequestHeaders to SetRequest

在此接口和其他接口中更改公共/已发布的方法公司。

更新后,我收到了很多无法加载的软件包,包括dclcxPivotGridOLAPD15.bpl,而这依赖于dclDataSnapServer150.bpl,它会遇到bpl上缺少的方法。

AFAIK我无法重新编译dclDataSnapServer150.bpl(也许还有其他失败的软件包,我刚停在这里)。

IDE上的DataSnap和DevExpress支持对我来说是必须的,所以

问题

  1. 是否有安全预先建立的路径可以更新到最新的Delphi XE INDY?
  2. 如果没有,我是否安全,只需通过创建旧的公共方法来填充源代码并在实现部分调用新的方法?
  3. 我错过了其他的东西,还是我真的坚持使用INDY 10.5.7直到下一个Delphi次要/主要版本?

4 个答案:

答案 0 :(得分:12)

[为Delphi XE安装Indy]

是的,安装过程很繁琐,但要正确完成它是值得的。

这适用于除SSL之外的所有Indy组件。 (我还没有尝试任何SSL的东西。)

A。)查找并销毁Delphi附带的所有Indy文件。这些是    没有好处,因为Indy项目每天都会更新 并修复新错误。    如果Delphi选择任何旧文件而不是新的Indy库,    你会在很难的时候从IDE那里得到疯狂的错误    跟踪。

我。转到组件 - >安装包,然后完全删除所有以“Indy”开头的包。

II。关闭德尔福。

III。从Delphi的Bin文件夹中删除所有与“dclIndy * .bpl”和“Indy * .bpl”匹配的文件。
     (C:\ Program Files \ Embarcadero \ RAD Studio \ 8.0 \ bin)

IV。删除与Delphi的Lib子文件夹中的“Indy * .dcu”和“Id * .dcu”^^^匹配的所有文件。
    (C:\ Program Files \ Embarcadero \ RAD Studio \ 8.0 \ lib \ win32 \ debug)
    (C:\ Program Files \ Embarcadero \ RAD Studio \ 8.0 \ lib \ win32 \ release)
    ^^^警告:注意恰好以字母“id”开头的非Indy DCU                  比如“idispids.dcu”和“idoc.dcu”

诉删除整个Indy10源文件夹:
    (C:\ Program Files \ Embarcadero \ RAD Studio \ 8.0 \ source \ Indy10)

B。)http://indy.fulgan.com/ZIP/下载最新的Indy10_XXXX.zip    (如果使用此zip文件获得编译错误或运行时错误,则执行任何步骤     下面 - 不要气馁!第二天重新下载zip文件并尝试     再次。这个zip文件每天都会更新,并且有可能存在     任何一天都会出现一些错误/错误。)

C。)仅将System,Core和Protocols文件夹解压缩到您自己的Indy库文件夹中。恩。
   (C:\ MyDelphiComponents \印\核心)
   (C:\ MyDelphiComponents \印\系统)
   (c:\ MyDelphiComponents \ Indy \ Protocols)

D。)启动Delphi。忽略所有失败的包对话框:这些是Embarcadero包    依赖于Indy! (只需在所有错误上单击“确定”,然后指示任何失败    不应再次加载包。)

E。)转到选项 - >环境选项 - > Delphi选项 - >浏览路径     - 删除以$(BDS)\ Lib \ Indy10

开头的路径

F。)转到选项 - >环境选项 - > Delphi选项 - >图书馆路径     - 将步骤C中的新系统,核心和协议文件夹添加到Delphi的库路径。

G。)按顺序执行以下5个操作:    (只要对任何有关升级项目的对话框说好。)


重要提示:

在加载每个dpk之后和每次构建之前,请转到:

项目 - >选项 - >说明 - >构建控件

将单选按钮设置为“Explicit Rebuild”。

(实际上,这是可选的,但我总是制作包Explicit Rebuild    因为他们似乎更容易处理,但我想听听什么    其他人想到这个......)


  1. 构建 - 系统\ IndySystem150.dpk
  2. 构建 - 核心\ IndyCore150.dpk
  3. 建立第一, 然后安装 - Core \ dclIndyCore150.dpk
  4. 构建 - 协议\ IndyProtocols150.dpk
  5. 建立第一, 然后安装 - Protocols \ dclIndyProtocols150.dpk
  6. **仔细检查您是否在所有套餐上设置了“明确重建”! **

    H。)最后,转到Component - > Install Packages并找到所有依赖的软件包    在步骤D中关闭的Indy上。重新激活它们,然后重新启动Delphi。    (如果你的新Indy与Delphi发布的那个没有太大变化,那些     包将使用新的Indy!)

    ++注意,重新激活Embarcadero时,您可能不会立即收到任何错误     包,但它们可能会在以后随机弹出。例如,我刚刚安装     Indy10_4548.zip和所有重新激活的软件包似乎都没问题。然后一天后出     蓝色,IDE给我一条消息,说它无法找到GetRequestHeaders     TIdCustomHTTP和dclWindowsAzureManagement150.bpl作为一个麻烦     结果。因此,我必须返回并在IDE中禁用该Windows Azure软件包。

答案 1 :(得分:7)

AFAIK你将失去一些强烈依赖于使用Delphi部署的Indy版本的软件包,最值得注意的是新的Datasnap。

只要所有需要的单元都可用,您可以尝试构建要使用的onwn包而不是无法重新编译的标准包。

IMHO Embarcadero应该找到一个关于自己代码的解决方案,这取决于像Indy这样的“不稳定”库。这在专业环境中是不可接受的,特别是因为他们无法发布官方更新,包括发布后几个月内Indy的错误修复。例如,我最近发现Indy 10.5.5邮件消息解析截断了邮件地址,这在10.5.8中没有发生。当然10.5.5的行为是不可接受的,我被迫升级......

答案 2 :(得分:4)

来自其他人的答案,主要是雷米的评论:

在不破坏Delphi XE Update 1中的DataSnap的情况下,无法安装Indy 10.5.8.0。

答案 3 :(得分:2)

虽然我不是自己使用Delphi XE,但是2010版本。在这个Stack Overflow帖子的帮助下,我能够将Indy组件升级到最新版本:Step by step upgrade of Indy 10 in Delphi 2009

我知道问题出在2009年(但答案也涵盖了2010年),但它在2010版本中对我有用,所以我的猜测是它也会对你有所帮助。我建议你阅读评论,因为那里也有一些很好的提示。希望这会有所帮助。