3

私はこれをウェブ全体で検索してきましたが、すべてがErrObjectクラスについて話しているかvbError、関数によって返された定数について話してVarTypeいる. そのタイプが実際に何であるかを知りたいですたとえば、 anintegerはのようなもの4で、astringはのようなもの"hello world"です。

ちょっとした背景として、これVarTypeが返すすべての定数とそれらが何を表しているかを示している公式の MSDN ページへのリンクを次に示します。とはError value?

4

2 に答える 2

5

C/C++ の COM に精通している場合は、その観点からは、パラメーターとして渡されたからメンバーVarType()の値を本質的に抽出する単純な関数であることを知っているはずです。メンバーの可能な値は、ここなどの多くの場所で文書化されています。vtVariantvt

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 と呼ばれます。ほとんどの人は、これらのコードをHRESULTs と呼びます。

Err.Numberこれらのコードは、 VB6 で得られる「エラー コード」と同じ種類のものです。Variantしたがって、 「エラー コード」を単なる数字と区別するように指示できます。

実際には、Variant にエラー コードを挿入するプログラムや COM コンポーネントは (存在するとしても) ごくわずかです。ほとんどの人は、エラーを伝えるために COM 例外を発行するだけです (このメカニズムは、オブジェクトを介して VB6 で公開されていErrます)。COM Exception メカニズムの外部でエラー コードを返すコンポーネントでさえ、型付き変数 (例: Long) でエラー コードを返す可能性があります。

したがって、この可能な戻り値が存在する理由は、完全を期すためです。実物を見ることはほぼないでしょう。

(編集:「エラー」バリアントを作成できないことについて少し削除してください。@Joeはそれについて私が間違っていることを証明しました。使用CVErr()して作成できます)

于 2013-05-15T18:29:09.307 に答える