【问题标题】:Migrating from Delphi 2006 to Delphi XE2从 Delphi 2006 迁移到 Delphi XE2
【发布时间】:2012-05-28 02:59:38
【问题描述】:

delphi 2006 中有一个代码库,过去多年没有开发。如果需要激活开发,有哪些选项。

  • 2006 年继续开发。(不确定 IDE 支持等)
  • 迁移到 Delphi XE2。 (不确定需要什么)
  • 用 Java 重新编码。

似乎第二种选择更可行,但这样做会涉及什么?我读了一些关于 Unicode 支持的东西,也不确定图形库支持。

为了正确看待事情,我一直是一名 Java 程序员,拥有 C/C++ 方面的经验。但是,我试图从进入市场策略的阻力最小的路径的角度来更多地理解它。

提前致谢。

【问题讨论】:

  • 我认为此时用 Java 重新编码更划算,从 D2006 迁移到 XE2 需要购买大量组件许可证,有些可以升级,有些需要更换(这将延迟迁移),此外,DXE2 可能不是目前最好的选择,因为 XE3(或他们将称之为的任何东西)很快就会发布。
  • Dorin:你怎么知道使用了多少第三方组件?最好的版本总是可用的..
  • +1 to @Harriv:升级版本几乎总是比改变整个技术平台更便宜,对用户群的影响也更小。从长远来看,改变技术应该作为更大战略的一部分,而不仅仅是因为其中一个项目在一段时间内不活跃。而且,这个项目6年没有改变,并不意味着它被放弃了。它应该是稳定的,在此期间不需要更改。
  • @Harriv 我还没有遇到过用 Delphi 编写的没有第三方专有组件的旧应用程序,在他的情况下可能没有,但我非常怀疑。
  • 正如 cmets 指出的那样,您也指出,像这样升级的两个主要问题是 A) Unicode 和 B) 第三方库(以及它们的 Unicode 支持)。对于XE2,你可能还需要看一下64位编译,这会带来一些变化(比如NativeInt被广泛使用,而不是Integer)。但是,据我所知,这绝对是最好的选择。

标签: delphi delphi-xe2 delphi-2006


【解决方案1】:

关于用 Java 重新编码,我无话可说。根据代码库所做的任何事情,这可能是一个不错的选择,因为您说您对 Java 有经验(而且,我认为,对 Delphi 没有经验)。

关于升级到Delphi XE2:

检查是否使用了任何第三方组件。

如果没有,您可能只需进行很少的更改即可升级到 Delphi XE2。

如果是,请检查这些组件的源代码是否已经可用。

否则,如果您想升级到 Delphi XE2,则必须购买这些组件的新许可证(这次购买包含源代码的许可证!)。如果你真的不走运,开发这些组件的公司已经破产了。那么你要么被 Delphi 2006 卡住,要么你必须找到这些组件的替代品。

如果您已经获得了组件的源代码,您可能仍想检查是否将它们升级到 Delphi XE2。它可能会为您省去一些麻烦。升级编写良好的组件对于经验丰富的 Delphi 开发人员来说不是问题(这些年来我做过无数次),但对于不知道可能存在的陷阱的人来说几乎是不可能的。

Delphi 2006 和 XE2 之间唯一的重大变化(实际上发生在 Delphi 2007 和 Delphi 2009 之间)是切换到 Unicode 字符串。切换现有的代码库可能是无痛的,也可能是真正的腰痛,这取决于它一开始写得有多好以及它如何(ab)使用字符串。

您还没有提到的另一个选项可能是升级到 Delphi 2007,这基本上是对 Delphi 2006 的错误修复,而不是其本身的真正版本。如果我没记错的话,Delphi 2006 软件包可以与 Delphi 2007 一起使用,甚至无需重新编译。

【讨论】:

  • 我们从 D2006 搬到了 D2010。由于我们没有使用第 3 方伴奏,因此工作量很小。我相信@dummzeuch 已经说了所有需要说的。+1
  • D2007“几乎”二进制兼容 D2006:bobswart.nl/weblog/Blog.aspx?RootId=5:2010
【解决方案2】:

一年前,我从 2006 年转到 XE(不是 XE2)。这很无痛。最重要的是 unicode。但即使这样也相对容易(在我的具体情况下可能)。大多数是由德尔福以正确的方式处理的。最大的问题是导入组件,尤其是当字符串用作字节字符串时,这在我的领域(音乐,midi)是常态。 Embarcadero 上有一个关于字符串转换的white paper

我只使用有可用源的组件。如果不这样做,您可能必须重新购买许可证。

【讨论】:

    【解决方案3】:

    从 2006 年到 2011/2012 年,这是一次长跑!

    但如果你考虑到这一点是可能的:

    • 您必须使用新的转换方法转换字符串变量;
    • 您必须检查 2006 年和 xe/xe2 之间的所有版本才能了解库的变化情况,因为有些已拆分,有些已合并,还有一些已删除;
    • 您必须购买/下载第 3 方组件的升级(如果有)。

    如果你做这 3 件事,应用程序将编译得很好。

    【讨论】:

      【解决方案4】:

      如果代码中除了诸如“Hello, World”之类的琐碎情况之外还有任何复杂性,那么升级 IDE 总是比重写代码更容易。

      Delphi 2006 中的主要障碍可能是:没有源代码的旧组件、Unicode 问题、可能使用过时的技术(主要是 BDE)以及可能的一些低级黑客行为,例如使用未记录的功能。

      You get old versions of Delphi free when you buy XE2 licence. 但是 Delphi 2006 不存在。 Delphi 2007 几乎相同(但更好)。 It may even be possible to use D2006 binary packages with Delphi 2007.

      重写时,您的首要任务是找出软件实际做了什么。逐行。然后您需要在 Java 中复制它,希望以 Java 风格复制,然后您需要根据旧软件验证该功能是否确实存在,是复制的。

      因此,如果旧组件存在问题,您可以选择完全重写或重新编译和部分重写之间的选择。

      也阅读这个,古老但很好的文字:Things You Should Never Do, Part 1

      也就是说,重写需要商业理由,并且有人愿意为此付费。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-05
        • 1970-01-01
        • 2012-03-25
        • 1970-01-01
        • 1970-01-01
        • 2014-12-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多