Delphi VCL 中的命名空间兼容性

Namespace compatibility in VCL for Delphi

如何才能最好地维护 Delphi 7 到 Delphi XE7 之间使用的名称空间的兼容性?

Delphi 7 使用 SysUtils 而 Delphi XE7 使用 System.SysUtils.

许多 ifdef 使代码变得混乱,所以我想尽可能避免它。

在 Delphi 支持命名空间前缀的更高版本中(我相信是 XE2 及更高版本),您可以在项目选项中定义命名空间。

Project Options > Delphi Compiler > Unit scope names

那么,您就不需要在 uses 子句中包含这些前缀。

默认情况下,新项目会自动为您包含其中的大部分内容。但是,如果您要升级旧项目,尤其是包,则默认情况下可能不会填充这些项目。我有 an incident 随机 Delphi 开始编译失败,因为这些单元缺少它们的名称空间前缀。