掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VARIANT(vt = VT_BSTR | VT_ARRAY)の値をchar型の文字列変数に格納するには? (ID:57168)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
forty-five さん レスありがとうございます。 あれから色々と調べてみて、こんな感じの関数を作ってみました。 int read_array(VARIANT& vstr,char *ptr, int szptr) { VARIANT args = vstr; VARTYPE vt = V_VT(&args); if (vt == (VT_VARIANT | VT_BYREF)) { args = *args.pvarVal; vt = V_VT(&args); } int bArray = vt & VT_ARRAY; if(!bArray)// not array { return 0; } SAFEARRAY *psa = NULL; HRESULT hr; LONG cElements, lLBound, lUBound; WCHAR *pdata; psa = V_ARRAY(&args); if(SafeArrayGetDim(psa) != 1) { return 0; } hr = SafeArrayGetLBound(psa, 1, &lLBound); if (FAILED(hr)) { return 0; } hr = SafeArrayGetUBound(psa, 1, &lUBound); if (FAILED(hr)) { return 0; } hr = SafeArrayAccessData(psa, (LPVOID*)&pdata); if (FAILED(hr)) { return 0; } cElements = lUBound-lLBound + 1; WideCharToMultiByte(CP_ACP, 0, pdata, -1, ptr, szptr, NULL, NULL); hr = SafeArrayUnaccessData(psa); return cElements; } 一部エラー処理は抜いているところがありますが・・・。 結局値がうまく取れません。 この関数のなかでウオッチしても、やっぱり取得できていないようでした・・・。 どなたかご存じの方、アドバイスをお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.