//old code CString CXTPReportRecordItemVariant::GetCaption(CXTPReportColumn* pColumn) { if (!m_strCaption.IsEmpty()) return m_strCaption; COleVariant var(m_oleValue); CXTPReportRecordItemEditOptions* pEditOptions = NULL; if (m_pEditOptions) pEditOptions = m_pEditOptions; else if (pColumn) pEditOptions = pColumn->GetEditOptions(); BOOL bConstraintEdit = FALSE; if (pEditOptions) bConstraintEdit = pEditOptions->m_bConstraintEdit; TRY { if (var.vt == VT_DATE && !bConstraintEdit && m_strFormatString != _T("%s")) { COleDateTime dt(var); //return dt.Format(m_strFormatString); return CXTPReportControlLocale::FormatDateTime(dt, m_strFormatString); } if (var.vt == VT_NULL) { var.vt = VT_I4; var.lVal = 0; } else { if (bConstraintEdit) CXTPReportControlLocale::VariantChangeTypeEx(var, VT_I4); else CXTPReportControlLocale::VariantChangeTypeEx(var, VT_BSTR); } } CATCH_ALL(e) { } END_CATCH_ALL if (bConstraintEdit) { CXTPReportRecordItemConstraint* pConstraint = pEditOptions ? pEditOptions->FindConstraint(var.lVal) : NULL; return pConstraint ? pConstraint->m_strConstraint : _T(""); } if (var.vt != VT_BSTR) //this function expected VT_BSTR only !? return _T(""); CString strVariant(var.bstrVal); if (m_strFormatString == _T("%s")) return strVariant; CString strCaption; strCaption.Format(m_strFormatString, (LPCTSTR)strVariant); return strCaption; }
LPCTSTR COcsWmi::strVariantArray( VARIANT var) { LONG dwSLBound = 0; LONG dwSUBound = 0; VARIANT v; VariantInit(&v); LONG i; static CString strRet; HRESULT hr; if(!V_ISARRAY(&var)) return strVariant( var); // // Check that there is only one dimension in this array // if ((V_ARRAY(&var))->cDims != 1) return NULL; // // Check that there is atleast one element in this array // if ((V_ARRAY(&var))->rgsabound[0].cElements == 0) return NULL; // // We know that this is a valid single dimension array // hr = SafeArrayGetLBound( V_ARRAY(&var), 1, (long FAR *)&dwSLBound); if (FAILED( hr)) return NULL; hr = SafeArrayGetUBound( V_ARRAY(&var), 1, (long FAR *)&dwSUBound); if (FAILED( hr)) return NULL; strRet = _T( ""); // VariantInit(&v); DECIMAL_SETZERO(v.decVal); for (i = dwSLBound; i <= dwSUBound; i++) { hr = SafeArrayGetElement( V_ARRAY(&var), (long FAR *)&i, &v); if (FAILED(hr)) continue; if (i < dwSUBound) { strRet += strVariant( v); strRet += _T( ";"); } else { strRet += strVariant( v); } // VariantClear(&v); DECIMAL_SETZERO(v.decVal); } return(strRet); }