Я пытаюсь обернуть некоторые данные из массива байтов в VARIANT, но не могу освободить данные:
Когда я запускаю этот код ...
SAFEARRAY * NewSArray;
SAFEARRAYBOUND aDim[1]; // a one dimensional array
aDim[0].lLbound = 0; //Sets the index to start from 0
//Sets the number of elements (bytes) that will go into the SAFEARRAY
aDim[0].cElements = pBuffer->GetSize();
NewSArray = SafeArrayCreate(VT_UI1, 1, aDim); // create a 1D SafeArray of BYTES
//Put the data from the man view into the SAFEARRAY
NewSArray->pvData = pBuffer->GetBuffer();
//FP Spread expects the spreadsheet data in the form of a VARIANT so we must pack the data from the SAFEARRAY into a
//VARIANT
VARIANT SpreadsheetBuffer;
VariantInit(&SpreadsheetBuffer);
SpreadsheetBuffer.vt= VT_ARRAY | VT_UI1; // set type to an array of bytes
SpreadsheetBuffer.parray= NewSArray;
try
{
VariantClear(&SpreadsheetBuffer);
}
catch (char *str)
{
AfxMessageBox(str);
}
Я получаю это сообщение: «Необработанное исключение в ... in ... 0xC015000F: Деактивируемый контекст активации не является последним активированным.»
Это сообщение не появляется в моемКстати AfxMessageBox.Кажется, что-то связано с типом варианта, потому что, если я не установлю его, я не получу исключение.Данные в pBuffer - это просто массив BYTE, который ранее был извлечен из SAFEARRAY.
кто-нибудь знает, что я делаю неправильно?
спасибо