zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Default value required for '%s' (Delphi)导致这个错误的原因及解决方法

错误方法 解决 for 原因 value 导致 这个
2023-09-11 14:15:13 时间

今天在调试DELPHI程序时遇到这样一个错误:

错误代码

[DCC Error] Unit1.pas(80): E2238 Default value required for 'Dataset'

原出错的函数声明:

procedure JsonToClientDataSet(AJson: string; ANodeName:string='DATA'; Dataset: TClientDataSet; );

百思不得其解,百度了一下找到了答案:

http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/cm_default_illegal_xml.html

导致的原因为:

定义函数时,默认值参数必须出现在参数列表的最右端(后面),任何一个默认值参数右边不允许再出现没有默认值参数。

也就是必须放在最后面,意思是如果出现了一个带默认值的参数后,那这个参数后面的所有参数都必须带默认值才可以

所以下面这样的写法才是正确的:

procedure JsonToClientDataSet(AJson: string; Dataset: TClientDataSet; ANodeName:string='DATA');
procedure JsonToClientDataSet(AJson: string; ANodeName:string='DATA');

 如果有两个参数都应具有默认值,或具有默认值的参数不是最后一个参数,则应采用下面的写法:

//带默认值的参数只能在后面
function MyFun(a:Integer; b:Integer=1; s:string='aaa'): Integer;

发现这点跟Python的规则倒是一模一样