delphi2007存在严重的OverloadBug,太让人伤失望了

来源:百度知道 编辑:UC知道 时间:2024/05/21 17:34:13
2个Overload函数。
function GetSql(SqlText: string; Values: array of Variant): string; overload;
function GetSql(SqlText: string; Params: array of string; Values: array of Variant): string;overload;
调用 函数 的语句:
GetSql('select %s from %s' , ['Name', 'Employee']);

在Delphi7正常运行。2007(CodeGear)竟然编译都通不过。报告ambiguous.
参数个数都不相同(第一个2参数,第二个函数3个参数)最基本的语法都保证不了,太让人伤失望了,难怪很多delphi开发员都转行了。
高手们请来瞅瞅, 这个bug害死人
不管D7能否通过,单就Overload的定义来说(参数个数不同或类型不同视为不同函数) 就矛盾了

下面2位,如果您知道是怎么回事,或是我语法没搞明白,还请您赐教。
那老气横秋的语气, 把自己搞得真是个高手一样。却又说不出个所以然。
呵呵, 这种为,俺劝您还是别装 13了好吧

拉倒吧。Delphi7能编译通过?
别开这种国际玩笑好吧!
这个不是“基本的语法都保证不了”,而是你基本语法没搞懂。

自己再看吧

还是去学学基础再发贴吧。

Delphi爱好者,一起和楼主等待答案

先不说是不是Delphi的Bug,其实Variant类型本来就可以表示任何类型,因此Variant和Variant的数组Delphi可能因此不能区分开来,如果你把代码改成下面的样子就不会有问题:
function GetSql(SqlText: string; Values: Variant): string; overload;
function GetSql(SqlText: string; Params: array of string; Values:Variant):
调用时:
GetSql('select %s from %s' , VarArrayOf(['Name', 'Employee']));
可以参考TDataSet的Locate方法