当谈到开发工具时,我是一个犹豫升级者。对于大约一半的产品,我仍然使用 D7,而对于其他产品,我仍然使用 D2006。

事实是,尽管 Unicode 支持非常受欢迎并且非常有用,但它可能会给我当前的项目带来更多的麻烦而不是收益(它们或多或少已经准备好 Unicode)。尤其是其中一个的情况,如果每个字符串占用以前两倍的内存,性能就会受到很大影响。

那么,除了 Unicode 之外,升级的其他主要动机是什么?

有帮助吗?

解决方案

为了正确地看待事物,请看一下 Delphi 7 和 Delphi 2007 之间添加的内容。这是一个显着的高水位。

http://blogs.codegear.com/nickhodges/2007/03/28/33579

http://www.stevetrefethen.com/blog/VCLAndRTLEnhancementsSinceDelphi7D7.aspx

Delphi 2009 设定了更高的标准。

http://blogs.codegear.com/pawelglowacki/2008/11/03/38527

http://blogs.codegear.com/chrispattinson/2008/09/19/38897

以下是我最喜欢的一些:

  • RTL 中的泛型(自然)和泛型集合。

  • 改进了构建配置,它们继承自通用基本配置。

  • DataSnap 改进,包括删除 COM 依赖项。

  • 比 Delphi 2007 更快、更稳定的 IDE,Delphi 2007 也毫不逊色。

我不确定如何在生产中使用它们,但你必须承认匿名方法真的很酷。我很好奇人们最终如何将它们与线程一起使用。

关于 Unicode 支持,只有两件事(我最喜欢的另一件事)。

  • 当您转换现有的 Unicode 项目时,您可能会看到显着的性能改进。我知道我做到了。

  • 您需要小心转换任何对字符大小进行假设的代码。如果您现有的代码支持 Unicode,您可能不会遇到很多问题。

http://dn.codegear.com/article/38437

http://dn.codegear.com/article/38498

http://dn.codegear.com/article/38693

其他提示

首先,我认为您不会注意到性能受到如此大的影响。

看一下

我想说,只是泛型就值得升级。其次是匿名方法。

我最近从 Delphi 4 升级到 Delphi 2009,主要是因为 Unicode,但也因为自我的版本以来 Delphi 中到处都有许多改进。

但升级时最让我高兴的意外改进是新的IDE(集成开发环境)。Delphi 7 和以前的版本有一个未固定的布局,这让我抓狂。现在它是一种可以轻松调整大小和移动的停靠表单。更不用说它的许多改进使每项编程任务都变得更加容易。请记住,您将所有编程时间都花在 IDE 上,因此每一件变得更简单的小事情都可以节省时间。

调试和单步执行代码时,默认情况下会监视所有局部变量。这非常有帮助。

FastMM 内存管理器是内置的。

我现在已经安装了 Delphi 4 和 Delphi 2009,并且我可以运行其中之一,甚至可以同时运行两者。这在转换我的程序时非常有用,因为我可以一起调试和单步执行这两个程序,以确保转换后的程序正常工作。

此外,Embarcadero 仍然为所有以前的版本所有者提供了 Borland 和当时的 Code Gear 所做的特殊升级价格。他们没有必要这样做,但这对他们来说是一个伟大的举动,将 Delphi 的早期采用者视为他们的 VIP。

我不喜欢什么?嗯,Delphi 4 在 2 秒内就启动了。Delphi 2009 大约需要 15 分。但之后就很快了。此外,单步执行代码更频繁地进入 CPU 代码,因为它通常是内联的,我认为没有任何办法可以解决这个问题。

如果您需要 Unicode,请立即升级。

如果您不需要 Unicode,Delphi 7 及更早版本仍然有足够的改进,值得最终跳转。

正如史蒂夫所说,主要语言的增加是一个很大的优势。但还有一件事。

过去几年,德尔福一直处于暴风雨天气中。版本也反映了这一点。7 是最后一个好的版本,2006 年是合理的,但仍然低于平均水平。但现在,2009 年一个新时代已经开始。德尔福找到了新家。重点又回到了成为最好的开发工具。仍有一些积压需要解决,但就我而言,德尔福又回到了上升的轨道。

Delphi 2009 已被证明比 Delphi 2007 稳定得多,仅对我来说就足以升级,delphi 2007 的错误和崩溃非常烦人和压力。

2件事。稳定性比2006年和2007年好很多。(更不用说它安装速度更快,运行速度更快,并且不会出现占用数百兆内存的令人讨厌的内存泄漏。)仅此一点就值得放弃最后两个版本中的任何一个。但至于语言的改进,有很多值得讨论的地方,而且已经讨论了很多,但对我来说,皇冠上的宝石是通用支持,尤其是新的内置 Generics.Collections 单元。最后,不再使用我们都熟悉的丑陋习语:

for i := 0 to myObjectList.Count - 1 do
begin
  currentObject := myObjectList[i] as TMyObjectType;
  currentObject.WhateverYoureDoingWithIt;
  ...
end;

相反,如果您将 MyObjectList 声明为基于泛型的 TObjectList<TMyObjectType>, ,它会为您处理类型转换,并抛出一个免费的枚举器(又名迭代器)作为包的一部分。你的循环现在看起来像这样:

for currentObject in myObjectList do
begin
  currentObject.WhateverYoureDoingWithIt;
  ...
end;

Unicode 和匿名方法很好,尤其是 Unicode 对于某些人来说可能是必不可少的,但就我个人而言,我最喜欢的改进是结束了丑陋的列表访问。

尼克·霍奇斯发帖称:

从 Delphi 7 升级的十大理由

他们包括:

  1. 实时模板
  2. 历史选项卡
  3. 可对接/可定制 IDE
  4. VCL 设计指南
  5. 新工具面板
  6. 重构
  7. 泛型
  8. 匿名方法(闭包)
  9. 统一码支持
  10. 功能区控件

他在结论中说:“写这篇文章最困难的部分是将其限制为十篇”

然后他列出了其他 24 个东西(不包括 Intellimouse 两次)。

我刚刚尝试了一下通用集合和增强的 For 循环(不要介意代码的视觉丑陋(例如if-then-else 在一行上)):

program genericTList;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Generics.Collections;

var
  myList : TList<string>;
  s: string;

begin
  myList := TList<string>.create;
  try
    myList.Add('Peter');
    writeln('Inviting Peter');
    myList.Add('Barbie');
    writeln('Inviting Barbie');
    if myList.Contains('Bob') then writeln('Bob has managed to sneak in...') else writeln('Bob is not invited!');
    writeln('List of invited people:');
    for s in myList do writeln(s); //feels sooo goood X-)
    readln;
  finally
    FreeAndNil(myList);
  end;
end.

离开了当时看起来快要死掉的德尔福三年后,我想我可能会回到这个可爱的世界。

我的 最伟大的德尔福项目 似乎因为没有支持 Unicode,但 Unicode 也是很棒的东西,所以我只需要修复几个地方的代码。昨天我还设法让它构建并执行而没有错误(似乎涉及某种 D2007->D2009 转换技巧),并且我注意到 D2009 速度非常快!它在(几乎*)各个方面都比旧版本更好。

*我还没有发现回归。

到目前为止,对我来说最重要的激励是 IDE 与 Delphi 2006 和同一项目相比的整体速度。

重构——提取方法、移动类、提取接口、可以提高代码和设计质量的操作,是新版本 IDE 中的一个非常好的功能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top