gpt4 book ai didi

error-handling - VB6中VarType返回的vbError是什么?

转载 作者:行者123 更新时间:2023-12-04 06:53:29 25 4
gpt4 key购买 nike

我一直在网上搜索这个,但一切都在谈论 ErrObject 类,或者 VarType< 返回的常量 vbError/函数。我想知道该类型实际上是什么,例如integer 类似于 4string 类似于 "hello world" 等。

了解一点背景知识,here是关于 VarType 的官方 MSDN 页面的链接,其中显示了它返回的所有常量以及它们所代表的含义。 错误值是什么?

最佳答案

如果你熟悉 C/C++ 中的 COM,你应该知道,从这个角度来看,VarType() 是一个简单的函数,它本质上是提取 vt 的值Variant 中的成员作为参数传入。 vt 成员的可能值记录在许多地方,例如 here .

如果您检查 COM 系统 header 的内部(例如,作为 Windows SDK 的一部分分发的 WTypes.h),您将看到 10 的 VbError 值确实映射到 C/C++ VT_ERROR 的枚举值。

enum VARENUM
{ VT_EMPTY = 0,
...
VT_ERROR = 10,
...
} ;

上面的 MSDN 链接描述了等于 VT_ERRORvt 的含义,如下所示:

An SCODE was specified. The type of the error is specified in scode. Generally, operations on error values should raise an exception or propagate the error to the return value, as appropriate.

所以,这基本上是它的意思:

Variant 显然支持存储多种类型的值,其中存储“错误代码”的可能性不大。更准确地说,这些代码正式称为scode,因为它们可以指示多种类型的“成功”以及“失败”。大多数人将这些代码称为HRESULT

这些代码与您从 VB6 中的 Err.Number 获得的“错误代码”相同。因此,您可以告诉 Variant 将“错误代码”与纯数字区分开来。

实际上,很少有程序或 COM 组件(如果有的话)会在变体中放入错误代码。几乎每个人都只是发出 COM 异常来传达错误(这种机制在 VB6 中通过 Err 对象公开)。即使是那些在 COM 异常机制之外返回错误代码的组件,也可能会在类型化变量中这样做(例如 Long 的)。

因此,这个可能的返回值存在的原因是为了完整性。你几乎不会在现实生活中看到它。

(编辑:删除关于无法创建“错误”变体的部分。@Joe 证明我错了。您可以使用 CVErr() 创建一个)

关于error-handling - VB6中VarType返回的vbError是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16571237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com