Delphi2007 for Win32 Beta 评论 Part One

From Hallvard's Blog

http://hallvards.blogspot.com/2007/03/review-delphi-2007-for-win32-beta-part.html
翻译:monkeyking(www.cnblogs.com/monkeyking
转载请注明出处。翻译匆忙,如有不妥之处请留言共同探讨。

CodeGearNick Hodges联系我,并给我一个授权,允许我讨论一下即将发布的Delphi2007 for Win32(产品代号为Spacely)。需要注意的是,以下评论都是基于2月中旬的预发布Beta版本 Build 2063,所以如遇变化请以正式发布的版本为准。

安装程序

下面的几张截图为大家呈现了新安装程序的外观。安装程序是由InstalAwareDelphi2007中已捆绑此工具)制作的,它应该使得CodeGear能以更加容易和更加集成的方式发布补丁和新版本。

http://vassbotn.googlepages.com/SpacelyInstaller1.PNG
http://vassbotn.googlepages.com/SpacelyInstaller2.PNG
http://vassbotn.googlepages.com/SpacelyInstaller3.PNG



Delphi2007是一个non-breaking版本

 

啥叫“Delphi2007是一个non-breaking版本”?很奇怪吧!根据CodeGear的路线图,今年的晚些时候会有一个代号为Highlander的新版本BDS(或者应该叫CDS了)出现。为了减少由于一年之内至少出现两个新版本的Delphi而带来的麻烦(对于开发者,第三方组件厂商等),CodeGear决定发布一个non-breaking版本的Delphi2007。这就意味着你可以使用BDS2006或者Turbo Delphi2006中的代码和组件,而不需要重新编译任何.dcuDelphi Compiled Unit)文件。因此,即使某个组件是以dcu文件的形式发布的,它仍能够正常工作。

(译者注:其后,我将non-breaking称之为“无缝”)

 

 

Delphi2007BDS2006Turbo Delphi 2006之间的无缝过渡很特殊,这意味着在.dcu层面上的二进制数据,Delphi2007对后两者具有兼容性,单元文件的interface部分也不存在因版本变化而带来的变化。所以你不需要修改任何已存在的类或者例程。请注意,Delphi单元文件的Interface部分所进行的检查,是允许你添加新类和标识的。(译者注:这个是指在编译代码时,编译器对interface部分的检查。当代码所引用的单元中出现了新的内容,比如一个新声明的类或者新的变量,此次检查仍能顺利通过,只要被引用代码所使用的变量或者代码没有变动即可。参照下面一段会有更加准确的理解)

 

 

这种方法带来的一个副作用就是它易于修改RTLVCLBug(只需在实现部分中做修改即可),也能很方便的声明一个新类或者新组件,但是你却很难为一个已经存在的类声明新功能,方法或者属性。尽管“困难”,但也不是无法做到。比如CodeGear 就已经使用了几个小技巧(原文为hack)在TForm类中实现对Vista Glass效果的原生支持。Allen Bauer已经公开了这个事情,并且说了他是如何实现的。在后面的评论中,我们将会与Delphi2007(相对于BDS2006)的RTLVCL新变化有更亲密的接触。

 

编译器有哪些新变化?

 

 

实际上,如果编译器有新变化,就有可能造成二进制数据层面上的不兼容性,所以普通意义上更新并不存在。不过,一些调查显示编译器确实有改进之处。例如,大量新的编译器提示,警告和错误信息。看起来就好象编译器已经有了XML文档生成功能。其中一部分新的错误消息能够有效帮助错误的修正。代码能够更早的生成内部错误,并有详细的编译时错误说明,用于解释代码究竟错在哪。下面就有一些新提示,警告和错误的例子。

 

New Hints:

 

H2445 Inline function '%s' has not been expanded because its unit '%s' is specified in USES statement of IMPLEMENTATION section and current function is inline function or being inline function

H2451 Narrowing given WideChar constant (#$%04X) to AnsiChar lost information

H2456 Inline function '%s' has not been expanded because contained unit '%s' uses compiling unit '%s'

 

New Warnings:

 

W1055 PUBLISHED caused RTTI ($M+) to be added to type '%s'

W1201 XML comment on '%s' has badly formed XML -- 'Whitespace is not allowed at this location.'

W1202 XML comment on '%s' has badly formed XML -- 'Reference to undefined entity '%s'.'

W1203 XML comment on '%s' has badly formed XML -- 'A name was started with an invalid character.'

W1204 XML comment on '%s' has badly formed XML -- 'A name contained an invalid character.'

W1205 XML comment on '%s' has badly formed XML -- 'The character '%c' was expected.'

W1206 XML comment on '%s' has cref attribute '%s' that could not be resolved

W1207 XML comment on '%s' has a param tag for '%s', but there is no parameter by that name

W1208 Parameter '%s' has no matching param tag in the XML comment for '%s' (but other parameters do)

 

New Errors:

 

E2447 Duplicate symbol '%s' defined in namespace '%s' by '%s' and '%s'

E2448 An attribute argument must be a constant expression, typeof expression or array constructor

E2449 Inlined nested routine '%s' cannot access outer scope variable '%s'

E2450 There is no overloaded version of array property '%s' that can be used with these arguments

 

Linker errors:

 

F2446 Unit '%s' is compiled with unit '%s' in '%s' but different version '%s' found

 

IDE的变化

 

 

新的IDE感觉很快,也易于使用。很显著得例子是在调试窗口和设计窗口切换时也很少有闪烁现象。

 

下面两张截图显示了IDE上的一些新内容。

http://vassbotn.googlepages.com/SpacelyIDE1.PNG

我已将变化之处编号:

 

1.我添加了一个工具条按钮,用于名为Notify on Language Exceptions的调试器设置。

2TForm的新属性GlassFrame,用于控制FormVista Glass效果。它巧妙的使用了class helperproperty injector和其他额外技术(hack)来实现的。

3Tool Palette部分修改了搜索机制。只要组件的名字中包含了你输入的字符串,它们都会被显示在列表中。例如输入“but”,所有按钮组件都会显示出来。很棒!

 

这是另外一张屏幕截图。

http://vassbotn.googlepages.com/SpacelyIDE2.PNG

1.新的文件浏览器窗口极其顺手。它就像一个迷你版的浏览器(explorer),大大减少我们对外部浏览器或者使用文件菜单的需求。同时,这个窗口也能停靠在任何位置或者处于浮动状态。当你不需要使用时,点击图钉按钮,窗口就会自动划出屏幕。

 

2.这是当前工程的编译器选项窗口。编译器警告,链接器和目录/编译条件现在都能为发行版本和调试版本单独设置。

 

3.在这里你可以看到新的编译器警告。它在外部单独停靠。

 

4.我添加了一个Vista上专用的组件TFileOpenDialog,此时编译器给我一个有关于使用平台方面的警告。不错!

 

这篇评论将在未来几天继续更新更多内容。

posted @ 2007-03-13 18:36  monkeyking  阅读(1622)  评论(7编辑  收藏  举报