案例
我正在尝试将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类有很多变化,包括重命名某些方法
在此接口和其他接口中更改公共/已发布的方法公司。
更新后,我收到了很多无法加载的软件包,包括dclcxPivotGridOLAPD15.bpl,而这依赖于dclDataSnapServer150.bpl,它会遇到bpl上缺少的方法。
AFAIK我无法重新编译dclDataSnapServer150.bpl(也许还有其他失败的软件包,我刚停在这里)。
IDE上的DataSnap和DevExpress支持对我来说是必须的,所以
问题
答案 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 因为他们似乎更容易处理,但我想听听什么 其他人想到这个......)
**仔细检查您是否在所有套餐上设置了“明确重建”! **
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)
我知道问题出在2009年(但答案也涵盖了2010年),但它在2010版本中对我有用,所以我的猜测是它也会对你有所帮助。我建议你阅读评论,因为那里也有一些很好的提示。希望这会有所帮助。