XE 开始加入,XE3 增加的 Class Helper 功能我觉得不能不提, 有了这个功能,a: integer; 就能使用 a.ToString 这样的语法,非常方便。 除了系统内定的 String Helper 外, 自己也可以加 Integer Helper, 自己的 String Helper…… 这个功能非常爽。比如,我原本经常用 if a='test' then 如果要求大小写无关, 我通常要查很久才确定怎么写,(记得好像是 CompareText(a, 'test')=0?) 自从我有自己的 string helper 后,我只要写 if a.EqualTo('test') then 就可以了。 当然,它最大的方便还是在IDE按.自动弹出的语法辅助上, 建议用用看。
XE5,更新,优化了,bug
Class Helper d2009就有了
不说d2009,更早的d2007就有help功能了,可以像c#中的扩展方法一样。对应的编译器扩展了for关键字 就像下面代码给TObject扩展一个ToString方法,2007就可以type TMyObjectHelper = class helper for Tobject public function ToString: string; end;function TMyObjectHelper.ToString: string; begin Result:= ClassName; end;procedure TForm1.btn1Click(Sender: TObject); var o:TObject; begin o:=TObject.Create; ShowMessage(o.ToString); o.Free; end;
就我所知,好像到了 XE3 才能写成 class helper for string 请注意最后一个字是string D200x 就能做到?Anyway,我的目的不在于说Delphi从哪个版本增加这个功能, 而是说这个功能值得使用。
2007 开始新增的代码重构非常棒
2009 开始新增vcl组件的unicode原生支持
2010 增加了强化的rttl再往上至xe2,对windows下的开发都没啥必要的东西
x3开始都重点就转移到移动平台了,如果不搞移动平台,可以无视
综合来说俺喜欢2010
另外2010开始together加入了代码格式化功能(ctrl+d),可以不再用其他代码格式化插件了。
感谢两位的回答。特别是sololie,比较详细。
wr960204回答的太简单了啊
xe支持的移动开发,有用过的吗?效果如何?这个只是想了解一下,我是用delphi做windows开发的,移动开发我用java做安卓,苹果不会。
有了这个功能,a: integer; 就能使用 a.ToString 这样的语法,非常方便。
除了系统内定的 String Helper 外,
自己也可以加 Integer Helper, 自己的 String Helper……
这个功能非常爽。比如,我原本经常用 if a='test' then 如果要求大小写无关,
我通常要查很久才确定怎么写,(记得好像是 CompareText(a, 'test')=0?)
自从我有自己的 string helper 后,我只要写 if a.EqualTo('test') then 就可以了。
当然,它最大的方便还是在IDE按.自动弹出的语法辅助上,
建议用用看。
就像下面代码给TObject扩展一个ToString方法,2007就可以type
TMyObjectHelper = class helper for Tobject
public
function ToString: string;
end;function TMyObjectHelper.ToString: string;
begin
Result:= ClassName;
end;procedure TForm1.btn1Click(Sender: TObject);
var
o:TObject;
begin
o:=TObject.Create;
ShowMessage(o.ToString);
o.Free;
end;
请注意最后一个字是string
D200x 就能做到?Anyway,我的目的不在于说Delphi从哪个版本增加这个功能,
而是说这个功能值得使用。
上面的代码就是用d2007写的,其实很多“新功能”是相对于d7甚至更低版本而言的,很多人直接是d7跨N个版本跳到了XE或更高,所以他们没发现一些功能再更早前的版本中就有了。
class helper for string、for integer 这些是必须xe3开始才行,xe3之前的只能针对非一般数据类型之外的class,但是helper for 扩展方法的功能是有了。
看能找到哪个了,谢谢大家。