VarIsEmpty和VarIsEmptyParam函数有什么区别?

7
在使用Delphi7时,我注意到不仅有一个VarIsEmpty函数,还有一个VarIsEmptyParam函数。由于Delphi的帮助文档没有给出太多解释:VarIsEmptyParam函数返回true,如果给定的变体表示未分配的可选参数。如果该变量包含任何其他值,则函数结果为false。我只是想知道是否有人使用过这个函数,如果使用了,如何使用它。
1个回答

8
在COM中,可以在任何位置的方法调用中使用可选参数,而在Delphi中只能在末尾使用。因此,如果您想省略参数,可以写EmptyParamEmptyParam是一个全局变量,其值已初始化为正确的值。
现在,当您实现COM接口时,也必须处理这些可选参数。查找这些省略的参数的方法是使用VarIsEmptyParam
请注意,即使将空变体作为参数给出,VarIsEmptyParam = false,因为该参数不是省略的。它只是空的,但是存在。
因此,通常有:
VarIsEmpty(v) ==> not VarIsEmptyParam(v)

and

VarIsEmptyParam(v) ==> not VarIsEmpty(v)

2
EmptyParam具有varError变体类型,其错误值为Var_ParamNotFound,而空变量是一种具有varEmpty变体类型的变量。这是两种完全不同的数据类型,只是名称相似。 - Rob Kennedy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接