2009-09-22 95 views
4

我创造了德尔福的ActiveX库中特定对象有一个名为DevelopmentCount与最新型的单个参数性能。在内部,属性getter在一个普通的Delphi对象上调用一个类似命名的函数,其中单个参数是可选的(这最后一个因素可能是不相关的)。可选参数

当我们在Delphi 2006中将此库编译为最终用户(使用Excel VBA)时,似乎DevelopmentCount propery的单个参数是可选的。

我们已经转移到德尔福2009年(已使用它6个月或更多)。当使用Delphi 2009编译相同的库时,对于最终用户,DevelopmentCount属性的单个参数不再是可选的。

我的问题是,我怎样才能使这个参数似乎是可选的德尔福2009年

回答

3

要添加默认的参数在COM库(称为VBA的可选参数),您需要设置参数标志在类型库编辑器中。点击修改器列,然后点击相关参数的按钮。勾选具有默认值复选框,并在提供的编辑框中输入默认值。

现在的问题。在Delphi 2009中,类型库编辑器中存在一个错误,它试图将日期写入ridl文件作为字符串。编辑器实际上应该将其转换为整数。这不会编译。幸运的是,ridl文件是一个字符串文件,可以编辑。因此,这是什么,你会在RIDL文件中看到

HRESULT _stdcall DevelopmentCount([in, defaultvalue(29/12/1899)] DATE); 

变更该日期为一个整数(注意30/12/1899为0)

HRESULT _stdcall DevelopmentCount([in, defaultvalue(-1)] DATE); 

的DLL现在编译,并且应用默认值。

请注意,如果您在Delphi中打开类型库,它将用日期字符串替换整数,并且您将无法再编译,因此您必须不断更改它。我不知道这是否已在德尔福2010年得到修复。