请问对有可选参数的函数怎样调用? ( 积分: 50 )

  • 主题发起人 主题发起人 delphicg
  • 开始时间 开始时间
D

delphicg

Unregistered / Unconfirmed
GUEST, unregistred user!
如:
function test(参数1,可选参数2,可选参数3):IDisPatch;
我调用时:
test(参数1);//只对必须的参数传递值
报错提示:
参数不完整
特向各位大侠请教!
 
如:
function test(参数1,可选参数2,可选参数3):IDisPatch;
我调用时:
test(参数1);//只对必须的参数传递值
报错提示:
参数不完整
特向各位大侠请教!
 
function test(参数1,可选参数2='',可选参数3=1)
 
应该可以的牙,既然是可选的,当然可以不填了。
 
function test(参数1,'','')
 
用overload定义三个函数吧
function test(prm1: sometype):IDispatch;overload;
function test(prm1,prm2: sometype):IDispatch; overload;
function test(prm1,prm2,prm3: sometype):IDispatch; overload;
或者,写成这样
function test(prm1:integer=0;prm2:integer=1;prm3:integer=2):IDispatch;
你就可以这样调用
test(12);
test(12,13);
test(12,13,14);
 
非常感谢上楼的提出宝贵的意见,
但是函数是别人已经定义到DLL文件中的,不是我自己定义的!

所以还未得到答案
大家继续讨论!
 
那你说的只给前面的参数,后面的忽略,得他的函数自己会处理默认值啊,如果不会,当然不行啦。如果你知道常用的某个值总是这样填写进去,可以加一个外套啊。
unit1;

interface

uses....

function test(prm1):IDispatch;

implementation

function RealTest(prm1,prm2,prm3):IDispatch;stdcall;external 'mydll.dll';

function test(prm1):IDispatch;
begin
Result := RealTest(prm1,11,11);
end;
这样给他个外套不就得了?
 
关键是搞清楚数据类型,然后再决定用什么空值,比如数字用0,字符用''
 
对不起大家!
是我自己表达错了!分就都给zqw0117了!
 
后退
顶部