升级到D2009的主要动机是什么(不包括Unicode)?

时间:2008-11-20 11:33:12

标签: delphi delphi-2009 upgrade

在开发工具方面,我是一个犹豫不决的升级程序。对于我产品的大约一半,我仍然使用D7,而对于其他D2006。

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

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

10 个答案:

答案 0 :(得分:13)

要把事情放到透视图中,请查看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依赖项。

  • 更快,更稳定的IDE超过Delphi 2007,这并不懈怠。

我不确定我将如何在制作中使用它们,但你必须承认匿名方法非常酷。我很想知道人们如何通过线程来使用它们。

关于Unicode支持的两件事(我的另一个最爱)。

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

  • 您需要注意转换任何对字符大小做出假设的代码。如果现有代码可识别Unicode,则可能不会发现很多问题。

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

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

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

答案 1 :(得分:9)

首先,我认为你不会注意到性能受到很大影响。

查看this

我会说只是泛型使其值得升级。其次是匿名方法。

答案 2 :(得分:8)

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

但升级后让我感到高兴的意外改进是新的IDE(集成开发环境)。 Delphi 7和之前的版本有一个未对接的布局,让我发疯。现在它是一个可以调整大小并轻松移动的停靠形式。更不用说它的许多改进使每个编程任务更容易。请记住,您将所有编程时间都花在了IDE的前面,因此每个小东西都更容易节省时间。

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

FastMM内存管理器内置。

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

此外,Embarcadero仍然提供Borland和Code Gear为所有以前的版本所有者提供的特殊升级价格。他们没有必要,但这是他们将德尔福的早期采用者视为他们的贵宾的一个伟大举措。

我不喜欢什么?好吧,Delphi 4在2秒内启动。 Delphi 2009需要大约15个。但之后它很快。通过代码逐步进入CPU代码更常见,因为它经常被内联,我认为没有任何解决方法。

如果您需要Unicode,请不要再考虑升级。

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

答案 3 :(得分:6)

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

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

答案 4 :(得分:4)

事实证明,Delphi 2009比Delphi 2007稳定得多,仅此对我而言就足以升级,delphi 2007的漏洞和崩溃非常烦人且压力很大。

答案 5 :(得分:4)

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>,它会为您处理类型转换,并将其作为包的一部分引入免费枚举器(AKA迭代器)。你的循环现在看起来像这样:

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

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

答案 6 :(得分:2)

Nick Hodges发布:

Top Ten Reasons to Upgrade From Delphi 7

它们包括:

  1. 实时模板
  2. 历史标签
  3. 可停靠/可自定义的IDE
  4. VCL设计师指南
  5. 新工具调色板
  6. 重构
  7. 泛型
  8. 匿名方法(闭包)
  9. Unicode支持
  10. 功能区控件
  11. 他在结论中说: “写这篇文章最困难的部分是将其限制在十分之一”

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

答案 7 :(得分:2)

我刚给了Generic Collections和增强的For-loop一个旋转(不介意代码的视觉丑陋(例如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.

在离开德尔福三年后,我觉得可能会回到这个可爱的世界。

我的greatest Delphi project似乎没有准备好Unicode,但Unicode也很棒,所以我只需要在很少的地方修复代码。昨天我也设法让它构建和执行没有错误(似乎有某种D2007-&D2009过渡技巧参与),我注意到D2009只是非常快!它比(几乎*)每个方面的旧版本更好。

*我没有找到回归YET。

答案 8 :(得分:1)

对我而言,迄今为止最重要的激励因素是IDE与Delphi 2006和同一项目相比的整体速度。

答案 9 :(得分:1)

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