掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VARIANT配列のデータを解凍するには? (ID:63775)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
// 2006/12/01(金) 10:07:52 // のとおり Variant型変数に圧縮されたデータが格納されているという前提 if ( !( vaData.vt & ( VT_ARRAY | VT_UI1 ) ) ) { // エラー処理 return 0; // 適当 } SAFEARRAY* psa = vaData.parray; // 長さの取得 LONG lb, ub; ::SafeArrayGetLBound( psa, 1, &lb ); ::SafeArrayGetUBound( psa, 1, &ub ); ULONG nTargetLen = ub - lb + 1; // データの取得 BYTE* pTargetData = NULL; HRESULT hr = ::SafeArrayAccessData( psaData, ( void** )&pTargetData ); if ( FAILED(hr) ) { // エラー処理 return 0; // 適当 } // 解凍 // ※解凍されるとどれぐらいのサイズになるか不明なので XXXXX とします。 // おそらく「ULONG *destLen」となっていることから、一度CCompZLIB::UncompressEx // の第一引数にNULLを指定して長さを取得するんだと思うけど。 ULONG destLen = XXXXX; BYTE* dest = new BYTE[ destLen ]; int ret = CCompZLIB::UncompressEx( dest, destLen, pTargetData, nTargetLen ); // 戻り値によってなんかやる。 // ※戻り値が何なのか不明だからなにもかけん // destが解凍されたデータ // 使わなくなったら dest を deleteする delete dest;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.