12

我前段时间在 Delphi 7 中编写了一个单元,并且刚刚获得了转换为 Delphi XE (Unicode) 的乐趣(痛苦)。

该单元在遇到一些麻烦后工作正常,我现在正试图使这个单元与不同的 Delphi 版本兼容,如果我需要在更新其他代码的同时将 IDE 切换回 Delphi 7。

我只有 Delphi 7 和 Delphi XE,但从我收集的用 Delphi 1 到 Delphi 2007 编写的代码将编译,但 Delphi 2009 及更高版本的代码将是 Unicode。

...无论如何,在单元中,我将非 unicode 和 unicode 分开,如下所示:

{$IFDEF VER150} //Delphi 7
// code
{$ELSE IFDEF VER220} //Delphi XE
// code
{$ENDIF}

如何修改编译器指令以使规则适用于多个版本?例如:

{$IFDEF VER80,  //D1
        VER90,  //D2
        VER100, //D3
        VER120, //D4
        VER130, //D5
        VER140, //D6
        VER150, //D7}

如果我分发源代码或 .dcu 单元,这将涵盖所有 Delphi 版本。

谢谢。

4

2 回答 2

18

我想知道在这种情况下最简单的方法是否是根据UNICODE条件切换行为。当且仅当您使用 Unicode 版本的 Delphi(即在 Delphi 2009 及更高版本中)时才定义此条件。这样做的最大优点是它是面向未来的——您不需要在每次发布新的 Delphi 时更新您的代码。更重要的是,条件开关将更具可读性,因为它将清楚地表达意图。

The Delphi documentation has an excellent topic listing all the pre-defined conditionals. The full list of version conditionals is also linked from there.

于 2011-11-25T14:20:45.567 回答
6

您最好的选择实际上是查看众多 JEDI 项目之一,例如http://sourceforge.net/projects/jedi-apilib/并看看他们是如何做到的。它们有共同的包含文件,其中包含您感兴趣的详细信息。JVCL 是另一个不错的选择...

于 2011-11-25T14:11:10.927 回答