6

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

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

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

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

提前致谢。

4

4 回答 4

8

我不能说任何关于用 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 一起使用,甚至无需重新编译。

于 2012-05-28T10:49:45.437 回答
4

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

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

于 2012-05-28T06:03:38.587 回答
2

It is a long jump taking 2006 to 2011/2012!

But it is possible if you consider that:

  • You have to convert String variables using the new conversions methods ;
  • You have to check all the versions between 2006 and xe/xe2 to know how the libraries have changed, bacause some have been spplited, others merged, and a few deleted ;
  • You have to buy/download the upgrade (if any) of your 3rd party components.

If you do that 3 things, the applications will compile just fine.

于 2012-06-30T00:38:23.087 回答
0

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

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

购买 XE2 许可证即可免费获得旧版本的 Delphi。但是 Delphi 2006 不存在。Delphi 2007 几乎相同(但更好)。甚至可以在 Delphi 2007 中使用 D2006 二进制包

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

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

另请阅读这个,古老但很好的文字:你不应该做的事情,第 1 部分

也就是说,你需要重写的商业理由,以及愿意为此付费的人。

于 2012-05-29T08:07:12.733 回答