Je suis en train de conclure des données à partir d'un tableau d'octets dans un VARIANT mais je ne peux pas sembler libérer les données:VariantClear() renvoie une exception lorsqu'il est appelé sur un VARIANT contenant un SAFEARRAY
Quand je exécuter ce code ...
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);
}
Je reçois ce message: "exception Unhandeled à ... en ... 0xC015000F: le contexte d'activation étant désactivée est pas le plus récemment activé un."
Ce message ne s'affiche pas dans mon AfxMessageBox. Cela semble avoir quelque chose à voir avec le type de variant car si je ne le mets pas, je n'obtiens pas l'exception. Les données dans pBuffer sont juste un tableau BYTE qui a été précédemment retiré d'un SAFEARRAY.
quelqu'un sait ce que je fais mal?
grâce
L'exception n'a aucun lien avec votre extrait de code. Faites en sorte que le débogueur s'arrête sur l'exception non gérée et publiez le contenu de la fenêtre de pile d'appel dans votre question. Assurez-vous que vous avez activé le serveur de symboles Microsoft. –