Delphi2007 for Win32 值得期待

Delphi2007是一个non-breaking版本
 
啥叫“Delphi2007是一个non-breaking版本”?很奇怪吧!根据CodeGear的路线图,今年的晚些时候会有一个代号为Highlander的新版本BDS(或者应该叫CDS了)出现。为了减少由于一年之内至少出现两个新版本的Delphi而带来的麻烦(对于开发者,第三方组件厂商等),CodeGear决定发布一个non-breaking版本的Delphi2007。这就意味着你可以使用BDS2006或者Turbo Delphi2006中的代码和组件,而不需要重新编译任何.dcu(Delphi Compiled Unit)文件。因此,即使某个组件是以dcu文件的形式发布的,它仍能够正常工作。
(译者注:其后,我将non-breaking称之为“无缝”)
 
 
Delphi2007与BDS2006和Turbo Delphi 2006之间的无缝过渡很特殊,这意味着在.dcu层面上的二进制数据,Delphi2007对后两者具有兼容性,单元文件的interface部分也不存在因版本变化而带来的变化。所以你不需要修改任何已存在的类或者例程。请注意,Delphi单元文件的Interface部分所进行的检查,是允许你添加新类和标识的。(译者注:这个是指在编译代码时,编译器对interface部分的检查。当代码所引用的单元中出现了新的内容,比如一个新声明的类或者新的变量,此次检查仍能顺利通过,只要被引用代码所使用的变量或者代码没有变动即可。参照下面一段会有更加准确的理解)
 
 
这种方法带来的一个副作用就是它易于修改RTL和VCL的Bug(只需在实现部分中做修改即可),也能很方便的声明一个新类或者新组件,但是你却很难为一个已经存在的类声明新功能,方法或者属性。尽管“困难”,但也不是无法做到。比如CodeGear 就已经使用了几个小技巧(原文为hack)在TForm类中实现对Vista Glass效果的原生支持。Allen Bauer已经公开了这个事情,并且说了他是如何实现的。在后面的评论中,我们将会与Delphi2007(相对于BDS2006)的RTL和VCL新变化有更亲密的接触。
 
编译器有哪些新变化?
 
 
实际上,如果编译器有新变化,就有可能造成二进制数据层面上的不兼容性,所以普通意义上更新并不存在。不过,一些调查显示编译器确实有改进之处。例如,大量新的编译器提示,警告和错误信息。看起来就好象编译器已经有了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的调试器设置。
2.TForm的新属性GlassFrame,用于控制Form的Vista Glass效果。它巧妙的使用了class helper,property injector和其他额外技术(hack)来实现的。
3.Tool Palette部分修改了搜索机制。只要组件的名字中包含了你输入的字符串,它们都会被显示在列表中。例如输入“but”,所有按钮组件都会显示出来。很棒!
 
这是另外一张屏幕截图。
http://vassbotn.googlepages.com/SpacelyIDE2.PNG

1.新的文件浏览器窗口极其顺手。它就像一个迷你版的浏览器(explorer),大大减少我们对外部浏览器或者使用文件菜单的需求。同时,这个窗口也能停靠在任何位置或者处于浮动状态。当你不需要使用时,点击图钉按钮,窗口就会自动划出屏幕。
 
2.这是当前工程的编译器选项窗口。编译器警告,链接器和目录/编译条件现在都能为发行版本和调试版本单独设置。
 
3.在这里你可以看到新的编译器警告。它在外部单独停靠。
 
4.我添加了一个Vista上专用的组件TFileOpenDialog,此时编译器给我一个有关于使用平台方面的警告。不错!
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值