编译器指令 - Delphi 版本

发布于 2024-12-18 04:37:50 字数 671 浏览 2 评论 0原文

我前段时间用 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 版本。

I have a unit I wrote in Delphi 7 some time ago, and have just had the fun (pain) of converting to Delphi XE (Unicode).

The Unit works fine after some trouble, I am now trying to make this unit compatible with different Delphi Versions should I ever need to switch IDE back to Delphi 7 whilst updating some other code.

I only have Delphi 7 and Delphi XE, but from what I gather code written in Delphi 1 to Delphi 2007 will compile, but code from Delphi 2009 and above will be Unicode.

...Anyway, in the Unit I am separating the non-unicode and unicode like so:

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

How do I modify the compiler directive so the rules apply to multi versions? For example something like:

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

This would then cover all Delphi versions should I distribute the source or .dcu unit.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情魔剑神 2024-12-25 04:37:50

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

Delphi 文档有一个出色的主题,列出了所有预定义的条件。版本条件的完整列表也可以从那里链接

I wonder if the simplest approach in this instance is to switch behaviour on the UNICODE conditional. This conditional is defined if and only if you are using a Unicode version of Delphi, i.e. in Delphi 2009 and later. The big advantage of this is that it is future proof—you don't need to update your code every time a new Delphi is released. What's more, the conditional switch will be far more readable since it will clearly express the intent.

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

思念绕指尖 2024-12-25 04:37:50

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

Your best bet is actually to look at one of the many JEDI projects, http://sourceforge.net/projects/jedi-apilib/ for example and look at how they do it. They have common include files that contain exactly the details you are interested in. JVCL is another good choice ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文