jac*_*ate 8 delphi indy indy10 delphi-xe
案子
我正在尝试将INDY更新为我的Delphi XE(Update 1)的最新版本,所以我从indy.fulgan.com/ZIP下载了最新的INDY10文件(Indy_4545.zip).
这些包成功编译,现在我甚至可以在about box对话框中看到新版本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支持对我来说是必须的
问题
小智 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)
^^^警告:提防非Indy DCU碰巧以字母"id"开头,如"idispids.dcu"和"idoc.dcu"
v.删除整个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\Indy\Core)
(c:\ MyDelphiComponents\Indy\System)
(c:\ MyDelphiComponents\Indy\Protocols)
D.)启动Delphi.忽略所有失败的包对话框:这些是依赖于Indy的Embarcadero包!(只需在所有错误上单击"确定",并指示不应再次加载任何失败的包.)
E.)转到选项 - >环境选项 - > Delphi选项 - >浏览路径 - 删除以$(BDS)\ Lib\Indy10开头的路径
F.)转到选项 - >环境选项 - > Delphi选项 - >库路径 - 将步骤C中的新系统,核心和协议文件夹添加到Delphi的库路径.
G.)按顺序执行以下5个操作:(只需对任何有关升级项目的对话框说好.)
重要:
加载每个dpk之后和每次构建之前,请转到:
项目 - >选项 - >描述 - >构建控制
将单选按钮设置为"显式重建".
(实际上,这是可选的,但我总是制作包Explicit Rebuild,因为它们似乎更容易处理,但我想听听其他人对此的看法......)
**仔细检查您是否已在所有包装上设置"明确重建"!**
H.)最后,转到Component - > Install Packages并找到在步骤D中关闭的所有依赖于Indy的软件包.重新激活它们,然后重新启动Delphi.(如果您的新Indy与Delphi发布的版本没有太大变化,那么这些软件包将使用新的Indy!)
++注意,重新激活这些Embarcadero软件包时,您可能不会立即收到任何错误,但它们可能会在以后随机弹出.例如,我刚刚安装了Indy10_4548.zip,所有重新激活的软件包似乎都没问题.然后又过了一天,IDE给我发了一条消息,说它在TIdCustomHTTP中找不到GetRequestHeaders,并且dclWindowsAzureManagement150.bpl因此遇到了麻烦.所以我不得不返回并在IDE中禁用该Windows Azure软件包.
小智 7
AFAIK你将失去一些强烈依赖于使用Delphi部署的Indy版本的软件包,最值得注意的是新的Datasnap.
只要所有需要的单元都可用,您可以尝试构建要使用的onwn包而不是无法重新编译的标准包.
恕我直言Embarcadero应该找到一个关于自己的代码的解决方案,取决于像Indy这样的"不稳定"库.这在专业环境中是不可接受的,特别是因为他们无法发布官方更新,包括发布后几个月内Indy的错误修复.例如,我最近发现Indy 10.5.5邮件消息解析截断了邮件地址,这在10.5.8中没有发生.当然10.5.5的行为是不可接受的,我被迫升级......
从其他人的回答,主要是雷米的评论:
如果不破坏 Delphi XE Update 1 中的 DataSnap,则无法安装 Indy 10.5.8.0。