3

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

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

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

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

4

1 回答 1

3

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

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

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

于 2011-09-15T05:04:53.863 回答