掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VARIANT(vt = VT_BSTR | VT_ARRAY)の値をchar型の文字列変数に格納するには? (ID:57170)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
forty-fiveさん ありがとうございます!! 下記ソースで解決です!! 本当にありがとうございました!!!! 後は、必要なエラー処理などを追加して・・・ 形が見えてきました。 本当にありがとうございました。 int read_array(VARIANT& vstr,char *ptr, int szptr) { VARIANT args = vstr; VARTYPE vt = V_VT(&args); // check VARIANT REFERENCE 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; BSTR *pdata; psa = V_ARRAY(&args); // Check dimensions of the array. if(SafeArrayGetDim(psa) != 1) { return 0; } // Get array bounds. hr = SafeArrayGetLBound(psa, 1, &lLBound); if (FAILED(hr)) { return 0; } hr = SafeArrayGetUBound(psa, 1, &lUBound); if (FAILED(hr)) { return 0; } // Get a pointer to the elements of the array. hr = SafeArrayAccessData(psa, (LPVOID*)&pdata); if (FAILED(hr)) { return 0; } // element count. cElements = lUBound-lLBound + 1; // put array data WideCharToMultiByte(CP_ACP, 0, *pdata, -1, ptr, szptr, NULL, NULL); // *ptr = pdata; hr = SafeArrayUnaccessData(psa); return cElements; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.