delphi - 如何告诉 Delphi 在 DXS 中使用本地项目的 Security.pas 文件而不是 Winapi.Security.pas?

标签 delphi delphi-10-seattle dcc32

Delphi 10 Seattle 引入了 Winapi.Security.pas。我尝试升级的项目(一个包)已经有一个 Security.pas 文件。除了从项目的范围名称列表中删除 Winapi(巨大不良链式 react )之外,有没有办法告诉 IDE 和编译器使用项目的 Security.pas 文件而不是 Winapi.Security .pas?

我已经尝试将项目重命名为 Security.pas,但这会导致编译器产生更多问题,生成与它所提示的代码无关的错误,所以这是一个我现在不想下去的老鼠洞。该项目在 XE7、FWIW 中构建得很好,因此这不是由于项目中的任何代码更改所致。

更新:

  • 重命名文件和使用单元别名不起作用。
  • 软件包的编译器行为与应用程序不同。

最佳答案

看起来这实际上可能与 Winapi.Security 单元有关,而不是像您在问题中建议的那样通用。例如,以下包可以正常编译:

package Package1;

requires
  rtl;

contains
  Windows in 'Windows.pas'; // blank unit named Windows.pas in project folder

end.

请注意,我和您一样,将 Winapi 包含在项目的单元范围名称列表中。

另一方面,这个包无法编译:

package Package1;

requires
  rtl;

contains
  Security in 'Security.pas'; // blank unit named Security.pas in project folder

end.

编译器失败并显示:

[dcc32 Error] Package1.dpk(7): E2200 Package 'rtl' already contains unit 'Winapi.Security'

如果问题纯粹与单元范围名称相关,那么两个包要么都会编译,要么都会失败。因此,我的结论是 Winapi.Security 存在一些问题。

我找不到 Winapi.Security 的源代码。我想知道它到底是什么。 [Nicholas Ring 为我在 rtl\win\winrt 目录中找到了源代码。]

无论如何,我认为是时候提交 QP 报告了。下面无法编译的包可能是该 QP 报告的起点。 [您提交的报告在这里 RSP-12469 .]

在我看来,很明显,如果您想采用西雅图,短期内您必须重新命名您的单位。

FWIW,这里有一些其他单元的行为与 Winapi.Security 相同:

  • Winapi.ApplicationModel
  • Winapi.CommonTypes
  • Winapi.Devices
  • Winapi.Foundation
  • Winapi.Gaming
  • Winapi.Globalization
  • Winapi.GraphicsRT
  • Winapi.Management
  • Winapi.Media
  • Winapi.Networking
  • Winapi.Storage
  • Winapi.UI
  • Winapi.WebRT

这些都是新添加的 WinRT 单元,我认为它们很重要。

关于delphi - 如何告诉 Delphi 在 DXS 中使用本地项目的 Security.pas 文件而不是 Winapi.Security.pas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32750178/

相关文章:

delphi - 重新声明自定义 Delphi 组件的 Width 属性

delphi - 如何对 TIdHTTP 调用的响应进行编码?

delphi - 有没有办法关闭 MSBuild 调用的 DCC32 中的安静模式?

delphi - 有没有办法强制Delphi命令行编译器输出英文文本?

delphi - 获取主题 TListView 的背景颜色

delphi - 在 Delphi 中检索 ListView 项值的正确方法是什么

arrays - Delphi 10. TCustomWinSocket 数组使用时访问冲突

c# - 堆已损坏。 C# dllimport、delphi PChar返回值

javascript - 在 TWebBrowser 中将字符串传递给 Javascript 时可能出现编码问题