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

发布于 2024-10-09 19:01:16 字数 1189 浏览 8 评论 0原文

案例

我正在尝试将我的 Delphi XE 的 INDY 更新到最新版本(更新 1),因此我从 indy.fulgan.com/ZIP

软件包编译成功,我现在甚至可以在“关于”框对话框中看到新版本 10.5.8.0,但在 IDE 重新启动后,我收到一条消息:

No se encuentra el punto de entrada del procedimiento @Idhttp@TIdCustomHTTP@GetRequestHeaders$qqrv恐龙图书馆 IndyProtocols150.bpl。

我的免费翻译为英语:

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

在快速比较新旧 IdHTTP.pas 后,我发现 TIdCustomHttp 类发生了很多变化,包括将一些方法

  • GetResponseHeaders 重命名为 GetResponse
  • GetRequestHeaders 为 GetRequest
  • SetRequestHeaders 为 SetRequest

以及此方法和其他方法中更改的 public/published 方法公司类接口。

更新后,我发现很多包无法加载,包括 dclcxPivotGridOLAPD15.bpl,它又依赖于 dclDataSnapServer150.bpl,它遇到了 bpl 上缺少的方法。

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

IDE 上的 DataSnap 和 DevExpress 支持是我日常工作所必需的,所以

问题

  1. 是否有安全的预先建立的路径来更新到 Delphi XE 的最新 INDY?
  2. 如果不是,我通过创建旧的公共方法并在实现部分调用新的方法来解析源代码是否安全?
  3. 我是否遗漏了其他内容,或者我真的坚持使用 INDY 10.5.7 直到下一个 Delphi 小/主要版本?

The case

I'm trying to update the INDY to the latest version for my Delphi XE (Update 1), so I downloaded the latest INDY10 file (Indy_4545.zip) from indy.fulgan.com/ZIP.

The packages compiles successfully and I can now even see the new version 10.5.8.0 on the about box dialog, but after a IDE restart I got a message saying:

No se encuentra el punto de entrada del procedimiento @Idhttp@TIdCustomHTTP@GetRequestHeaders$qqrv en la biblioteca de vínculos dinámicos IndyProtocols150.bpl.

My free translation to English:

Entry point not found for procedure @Idhttp@TIdCustomHTTP@GetRequestHeaders$qqrv not found on the dynamic link library IndyProtocols150.bpl.

After a quick comparision of old and new IdHTTP.pas I found a lot of changes on the TIdCustomHttp class, including the rename of some methods

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

Along with changed public/published method firms in this and other and classes interfaces.

After the update, I got a lot of packages failing to load, including dclcxPivotGridOLAPD15.bpl, which in turns depends on dclDataSnapServer150.bpl which encounters the missing method on the bpl.

AFAIK I can't recompile the dclDataSnapServer150.bpl (and maybe other failing packages, I just stopped here).

DataSnap and DevExpress support on the IDE is a must for my day to day so

The questions

  1. Is there a safe pre-established path to update to the newest INDY for Delphi XE?
  2. If not, am I on the safe side by just parching the source code by creating the old public methods and call the new ones on the implementation part?
  3. am I missing something else or am I really stuck with INDY 10.5.7 until the next Delphi minor/major release?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

ヅ她的身影、若隐若现 2024-10-16 19:01:17

[安装 Indy for Delphi XE]

是的,安装过程很乏味,但正确完成它是值得的。

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

A.) 查找并销毁 Delphi 附带的所有 Indy 文件。这些都是
这没什么好处,因为 Indy 项目每天都会更新新的错误修复。
如果 Delphi 选择任何旧文件而不是新的 Indy 库,
你会在不同的时间从 IDE 中收到疯狂的错误,这些错误很难解决
痕迹。

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

二.关闭德尔福。

三.从 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”

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

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

C.) 仅将 System、Core 和 Protocols 文件夹提取到您自己的 Indy 库文件夹中。例如
(c:\MyDelphiComponents\Indy\Core)
(c:\MyDelphiComponents\Indy\System)
(c:\MyDelphiComponents\Indy\Protocols)

D.) 启动 Delphi。忽略所有失败的包对话框:这些是 Embarcadero 包
那靠印地! (只需在所有错误上单击确定,并指出任何失败的
不应再次加载软件包。)

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

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

G.) 按顺序执行以下 5 个操作:
(只需对有关升级项目的任何对话框说“确定”即可。)


重要提示:

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

项目 --> 选项 --> 描述 --> 构建控制

将单选按钮设置为“显式”重建”。

(实际上,这是可选的,但我总是使包显式重建
因为这样看起来更容易处理,但我想听听是什么
其他人考虑这个...)


  1. 构建 - System\IndySystem150.dpk
  2. 构建 - Core\IndyCore150.dpk
  3. 首先构建,
    然后安装 - Core\dclIndyCore150.dpk
  4. 构建 - Protocols\IndyProtocols150.dpk
  5. 首先构建,
    然后安装 - Protocols\dclIndyProtocols150.dpk

** 仔细检查您是否已在所有软件包上设置“显式重建”! **

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

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

[Installing Indy for Delphi XE]

Yes, the install process is tedious, but it's worth it to get it done right.

This is for all Indy components except SSL. (I haven't tried any of the SSL stuff yet.)

A.) Seek and destroy all Indy files that come with Delphi. These are
no good as the Indy project is updated every single day with new bug fixes.
If Delphi picks up any of the old files instead of your new fresh Indy library,
you will get crazy errors from the IDE at all different times that are very hard to
trace.

i. Go to Component-->Install Packages, then completely remove all packages that start with "Indy".

ii. Close Delphi.

iii. Erase all files that match "dclIndy*.bpl" and "Indy*.bpl" from Delphi's Bin folder.
(C:\Program Files\Embarcadero\RAD Studio\8.0\bin)

iv. Erase all files that match "Indy*.dcu" and "Id*.dcu"^^^ in Delphi's Lib sub folders.
(C:\Program Files\Embarcadero\RAD Studio\8.0\lib\win32\debug)
(C:\Program Files\Embarcadero\RAD Studio\8.0\lib\win32\release)
^^^ Warning: watch out for non-Indy DCUs that happen to begin with the letters "id"
like "idispids.dcu" and "idoc.dcu"

v. Delete the entire Indy10 source folder:
(C:\Program Files\Embarcadero\RAD Studio\8.0\source\Indy10)

B.) Download the latest Indy10_XXXX.zip from http://indy.fulgan.com/ZIP/
(If you get a compile error or runtime error using this zip file for any of the steps
below -- don't be discouraged! Re-download the zip file on the following day and try
again. This zip file gets updated every day and there is a chance that there may be
some bugs/errors on any given day.)

C.) Extract only the System, Core, and Protocols folders into your own Indy library folder. ex.
(c:\MyDelphiComponents\Indy\Core)
(c:\MyDelphiComponents\Indy\System)
(c:\MyDelphiComponents\Indy\Protocols)

D.) Launch Delphi. Ignore all failed package dialogs: These are the Embarcadero packages
that rely on Indy! (Just click Ok on all errors, and indicate that any failed
packages should not be loaded again.)

E.) Go to Options-->Environment Options-->Delphi Options-->Browsing Path
- Remove paths that start with $(BDS)\Lib\Indy10

F.) Go to Options-->Environment Options-->Delphi Options-->Library Path
- Add your new System, Core, and Protocols folders from step C to Delphi's library path.

G.) Perform the following 5 actions in order:
(Just say OK to any dialogs about upgrading the project.)


Important:

After loading each dpk and before each build, go to:

Project-->Options-->Description-->Build Control

Set radio button to "Explicit Rebuild".

(Actually, this is optional, but I always make packages Explicit Rebuild
because they seem easier to handle that way, but I'd like to hear what
other people think about this...)


  1. Build - System\IndySystem150.dpk
  2. Build - Core\IndyCore150.dpk
  3. Build first,
    then Install - Core\dclIndyCore150.dpk
  4. Build - Protocols\IndyProtocols150.dpk
  5. Build first,
    then Install - Protocols\dclIndyProtocols150.dpk

** Double check that you've set "Explicit Rebuild" on all packages! **

H.) Finally, go to Component-->Install Packages and find all of the packages that rely
on Indy that were turned off during step D. Reactivate them, and restart Delphi.
(If your new Indy hasn't changed too much from the one released with Delphi, those
packages will use the new Indy!)

++ Note, you may not receive any errors right away when reactivating those Embarcadero
packages, but they may pop up at random times later. For example, I just installed
Indy10_4548.zip and all the reactivated packages seemed fine. Then a day later out of
the blue, the IDE threw me a message that said it couldn't find GetRequestHeaders in
TIdCustomHTTP and that the dclWindowsAzureManagement150.bpl was having trouble as a
result. So I had to go back and disable that Windows Azure package in the IDE.

熟人话多 2024-10-16 19:01:17

AFAIK 您将丢失一些强烈依赖于使用 Delphi 部署的 Indy 版本的软件包,尤其是新的 Datasnap。

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

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

AFAIK you're going to lose some packages that depends strongly on the Indy version deployed with Delphi, most notably the new Datasnap.

You may try to build your onwn packages to be used instead of standard ones that can't be recompiled, as long as all the needed units are available.

IMHO Embarcadero should find a solution about its own code depending on an "unstable" library like Indy. That's not acceptable in a professional environment, especially since they are unable to release official updates including the bug fixes from Indy beyond a few months from release. For example I found lately that Indy 10.5.5 mail message parsing truncates mail addresses, that not happens in 10.5.8. Of course the 10.5.5 behavior is not acceptable, I am forced to upgrade...

别理我 2024-10-16 19:01:17

根据其他人的答案,主要是 Remy 的评论:

在不破坏 Delphi XE Update 1 中的 DataSnap 的情况下安装 Indy 10.5.8.0 是不可能的。

From other's answers and mainly Remy's comments:

It is not possible to install Indy 10.5.8.0 without breaking DataSnap in Delphi XE Update 1.

放我走吧 2024-10-16 19:01:17

虽然我自己用的不是Delphi XE,而是2010版本。在 Stack Overflow 帖子的帮助下,我能够将 Indy 组件升级到最新版本:在 Delphi 2009 中逐步升级 Indy 10

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

Although I don't use Delphi XE my self, but the 2010 version. I was able to upgrade Indy components to the most current version, with the help of this Stack Overflow post: Step by step upgrade of Indy 10 in Delphi 2009

I know the question is for 2009 (but the answer covers 2010 as well), but it worked for me in version 2010, so my guess is that it will help you as well. I'd recommend you'd read the comments, since there are some good hints there as well. Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文