VarIsEmpty和VarIsEmptyParam函数之间有什么区别

Ede*_*com 7 delphi delphi-7 variant

刚才在Delphi7工作,我注意到不仅VarIsEmpty存在一个函数,而且还存在一个函数VarIsEmptyParam.

由于Delphi的帮助没有给出太多解释:

如果给定的变量表示未分配的可选参数,则VarIsEmptyParam返回true.

如果变量包含任何其他值,则函数结果为false.

我只是想知道是否有人使用过这个功能,如果有的话,这个功能是如何使用的.

Uwe*_*abe 8

在COM中,可以在任何位置的方法调用中使用可选参数,而在Delphi中,这只能在最后进行.因此,如果您想省略参数,则可以编写EmptyParam.EmptyParam是使用正确值初始化的全局变量.

现在,当您实现COM接口时,您也必须处理这些可选参数.找出这些省略的参数的方法是VarIsEmptyParam.

请注意,即使作为参数给出的空变量也会产生VarIsEmptyParam = false,因为不会省略param.它只是空的,但它就在那里.

所以通常有:

VarIsEmpty(v) ==> not VarIsEmptyParam(v)
Run Code Online (Sandbox Code Playgroud)

VarIsEmptyParam(v) ==> not VarIsEmpty(v)
Run Code Online (Sandbox Code Playgroud)

  • `EmptyParam`的变体类型为`varError`,错误值为`Var_ParamNotFound`,而空变量是变量类型为`varEmpty`的变量.两种完全不同的数据,只是名称相似. (2认同)