【问题标题】:Where did the unit named InvRules (formerly in the SOAP folder) go in Delphi XE2?名为 InvRules 的单元(以前在 SOAP 文件夹中)在 Delphi XE2 中的什么位置?
【发布时间】:2011-09-09 14:36:01
【问题描述】:

我正在尝试将一些 Delphi XE 代码移植到 XE2,它使用一个名为 InvRules.pas 的单元,根据 XE2 文档,它没有命名空间前缀。

它也不在我期望的soap文件夹中:

C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\source\soap

最简单的答案是它已从 XE2 中删除(意外或故意)。 有没有人弄清楚是怎么回事?该单元包含 GetStackTypeSize 和 RetOnStack 等函数,这些函数有时用于自定义 TRIOHelper 类型类中。

【问题讨论】:

  • 我可以确认它没有安装在与 XE2 Pro SKU 相关的驱动器上的任何位置。 (我有几个早期版本的 Delphi 的副本)。
  • 我现在已经从 XE 复制了它,它可以工作。

标签: delphi soap delphi-xe2


【解决方案1】:

soap 运行时不再使用此单元,因此不再发货。在以前的版本中,它是 soaprtl 运行时包的一部分。对 XE2 版本的 soap 运行时进行了一些重大更改,以使代码可移植到 x64 并减少对基本上在 RTTI 支持单元中复制的 BASM 代码的依赖。与提交状态相关的更改日志条目:

重构 InvRules,使用 RTTI 获取类型大小。 从soap包中移除InvRules、PrivateHeap。

如果您的代码依赖于本单元中的辅助例程,您应该可以使用以前版本的源代码。您可能还想区分 XE 和 XE2 之间的 Invoker.pas、InvokeRegistry.pas、OPToSOAPDomConv.pas 和 Rio.pas 单元,以了解代码如何更改,使其不再依赖 InvRules.pas 单元。

【讨论】:

  • 谢谢马克。您可能想要 ping 文档团队并告诉他们删除对 InvRules 的引用,并编写一个关于“已删除的旧 RTL 单元”的 wiki 页面。
  • 谢谢沃伦,我会这样做的。我们简化了一些决定应交付哪些源文件的过程,但保持文档同步(尤其是文件删除)仍然主要是手动过程。
猜你喜欢
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 2012-03-06
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多