在开发工具方面,我是一个犹豫不决的升级程序。对于我产品的大约一半,我仍然使用D7,而对于其他D2006。
事实是,尽管Unicode支持非常受欢迎并且非常有用,但它可能会让我遇到麻烦而不是当前项目的收益(它们已经或多或少已经准备好了)。特别是如果每个字符串占用的内存是以前的两倍,那么其中一个人的性能会受到很大影响。
那么,除了Unicode之外,升级的其他主要动机是什么?
答案 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
答案 1 :(得分:9)
答案 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)
答案 4 :(得分:4)
答案 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
它们包括:
他在结论中说: “写这篇文章最困难的部分是将其限制在十分之一”
然后他列出了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中是一个非常好的功能。