2011-09-13 10 views
5

私はBSTRを含むバリアントを持っていますが、時にはBSTRが ""(空)なので、これを避けるには?私は次のようなものを試しました:BSTRが空であることを確認してください

variant.bstrVal != NULL 

しかし、それは動作しませんでした。

答えて

17

使用SysStringLen

if (SysStringLen(variant.bstrVal) == 0) 
{ ... } 
-1

あなたは、これは間違っているVT_NULLまたはVT_EMPTY

if (variant.vt != VT_NULL) 
{ 
    ... 
} 
+0

ためVARIANTvtメンバーをテストすることができます。空のバリアントは、空の文字列 –

+0

@MMが質問を誤読することについて謝罪した 'VT_BSTR'に設定されたバリアントとは異なります。しかし、 'VT_EMPTY'のテストはそのトリックを行うべきです。 –

+0

VT_EMPTYはVT_BSTRとも異なります。この質問は、既にvariant.vt == VT_BSTR'が知られていることを暗示しています。 –

関連する問題