C/C++ の COM に精通している場合は、その観点からは、パラメーターとして渡されたからメンバーVarType()
の値を本質的に抽出する単純な関数であることを知っているはずです。メンバーの可能な値は、ここなどの多くの場所で文書化されています。vt
Variant
vt
COM システム ヘッダー (Windows SDK の一部として配布されている WTypes.h など) の内部を確認すると、VbError
値 10 が実際に C/C++ 列挙値の にマップされていることがわかりますVT_ERROR
。
enum VARENUM
{ VT_EMPTY = 0,
...
VT_ERROR = 10,
...
} ;
上記の MSDN リンクは、次のようvt
に等しいa の意味を説明しVT_ERROR
ています。
SCODE が指定されました。エラーのタイプはscodeで指定されます。通常、エラー値に対する操作では、必要に応じて例外を発生させるか、エラーを戻り値に伝播する必要があります。
したがって、基本的には次のようになります。
はVariant
明らかに多くの種類の値の格納をサポートしていますが、その中には「エラー コード」を格納する可能性があります。より正確には、これらのコードは、scode
多くの種類の「成功」と「失敗」を示すことができるため、正式には 's と呼ばれます。ほとんどの人は、これらのコードをHRESULT
s と呼びます。
Err.Number
これらのコードは、 VB6 で得られる「エラー コード」と同じ種類のものです。Variant
したがって、 「エラー コード」を単なる数字と区別するように指示できます。
実際には、Variant にエラー コードを挿入するプログラムや COM コンポーネントは (存在するとしても) ごくわずかです。ほとんどの人は、エラーを伝えるために COM 例外を発行するだけです (このメカニズムは、オブジェクトを介して VB6 で公開されていErr
ます)。COM Exception メカニズムの外部でエラー コードを返すコンポーネントでさえ、型付き変数 (例: Long
) でエラー コードを返す可能性があります。
したがって、この可能な戻り値が存在する理由は、完全を期すためです。実物を見ることはほぼないでしょう。
(編集:「エラー」バリアントを作成できないことについて少し削除してください。@Joeはそれについて私が間違っていることを証明しました。使用CVErr()
して作成できます)