函数参数的默认值问题.function fVariant(v1:Variant=''; v2:Variant=''):string;出错.(100分)

  • 主题发起人 主题发起人 sileo
  • 开始时间 开始时间
S

sileo

Unregistered / Unconfirmed
GUEST, unregistred user!
1.function fstring(v1:string=''
v2:string=''):string
//正确的

2.function fVariant(v1:Variant=''
v2:Variant=''):string
//错误的
[错在]: Parameters of this type cannot have default values.
为什么Variant类型的不能这样?
我又必须用到此变量类型, 因为我有很多地方调用此函数.
每次调用的入口参数的类型都不一样,
个数也不一样,所以想用默认值.
比如:我要用到 a:= fVariant()

a:= fVariant('A',10);
a:= fVariant(5,'A');
等等.

高手: 应怎样解决? 或有其他好办法么? 谢!
 
这样试一试:
function fVariant(v1:Variant=EmptyParam
v2:Variant=EmptyParam):string

我猜的,现在没有办法调试:-(
 
不行啊.
还是
[错在]: Parameters of this type cannot have default values.
 
重载函数是好办法
 
因为variant类型的定义中对string的类型的用法和
普通的string类型好象有点区别,这区别是什么我忘了
等我回去查查书[:D]
 
重载不是很好。我的参数个数有很多, 要重载很多次。
因为我调用时,传的参数个数是不定的。

用重载的话,我不如把参数设为结构指针。
我就是不想用结构指针,调用的时候麻烦,又要定义还要赋值。

还有没有好办法。
 
有好办法:(在D5下通过)
Func FV(V:Variant;ParamCount:integer)
//ParamCount 参数个数
begin
if ParamCount=0 //无参数
begin
end
else
begin
v[0]
v[ParamCount-1]
end;

//调用FV
var
v:variant;
i:integer;
begin
v:=vararrayof([5,'A'])

FV(V,2);
//无参数
FV(Null,0);
end;
 
看看delphi中format函数的实现方法
 
function fVariant(v: array of const):string;
begin
High(v) 即为 参数个数减 1
然后可以根据参数个数判断情况处理
比如传入一个参数,即表示另一个没有,应为默认值
end;
 
后退
顶部