xlFree
S’applique à: Excel 2013 | Office 2013 | Visual Studio
Utilisé pour libérer les ressources mémoire allouées par Microsoft Excel lors de la création de la valeur de retour XLOPER/ XLOPER12 dans un appel à Excel4, Excel4v, Excel12 ou Excel12v. La fonction xlFree libère la mémoire auxiliaire et réinitialise le pointeur sur NULL, mais ne détruit pas les autres parties duXLOPER12XLOPER/ .
Excel4(xlFree, 0, n, LPXLOPER px_1, ..., LPXLOPER px_n);
Excel12(xlFree, 0, n, LPXLOPER12 px_1, ..., LPXLOPER12 px_n);
Paramètres
px_1, ..., px_n
Une ou plusieurs XLOPER12 XLOPER/ à libérer. Dans les versions d’Excel jusqu’à 2003, le nombre maximal de pointeurs pouvant être passés est de 30. À compter d’Excel 2007, ce nombre est passé à 255.
Valeur de propriété/valeur de renvoi
Cette fonction ne retourne pas de valeur.
Remarques
Vous devez libérer chaque XLOPER que vous obtenez comme valeur de retour d’Excel4 ou Excel4v et chaque XLOPER12 que vous obtenez en tant que valeur de retour d’Excel12 ou Excel12v s’il s’agit de l’un des types suivants : xltypeStr, xltypeMulti ou xltypeRef. Il est toujours sûr de libérer d’autres types, même s’ils n’utilisent pas de mémoire auxiliaire, tant que vous les obtenez à partir d’Excel4 ou Excel12.
Lorsque vous retournez à Excel un pointeur vers unXLOPER12XLOPER/ qui contient toujours de la mémoire allouée par Excel pour être libéré, vous devez définir xlbitXLFree pour vous assurer qu’Excel libère la mémoire.
Exemple
Cet exemple appelle GET. WORKSPACE(1) pour retourner la plateforme sur laquelle Excel s’exécute actuellement en tant que chaîne. Le code copie cette chaîne retournée dans une mémoire tampon pour une utilisation ultérieure. Le code replace la mémoire tampon dans le XLOPER12 pour une utilisation ultérieure avec la fonction Excel. Enfin, le code affiche la chaîne dans une zone d’alerte.
\SAMPLES\EXAMPLE\EXAMPLE.C
short WINAPI xlFreeExample(void)
{
XLOPER12 xRes, xInt;
XCHAR buffer[cchMaxStz];
int i,len;
// Create an XLOPER12 for the argument to Getworkspace.
xInt.xltype = xltypeInt;
xInt.val.w = 1;
// Call GetWorkspace.
Excel12f(xlfGetWorkspace, &xRes, 1, (LPXLOPER12)&xInt);
// Get the length of the returned string
len = (int)xRes.val.str[0];
//Take into account 1st char, which contains the length
//and the null terminator. Truncate if necessary to fit
//buffer.
if (len > cchMaxStz - 2)
len = cchMaxStz - 2;
// Copy to buffer.
for(i = 1; i <= len; i++)
buffer[i] = xRes.val.str[i];
// Null terminate, Not necessary but a good idea.
buffer[len] = '\0';
buffer[0] = len;
// Free the string returned from Excel.
Excel12f(xlFree, 0, 1, &xRes);
// Create a new string XLOPER12 for the alert.
xRes.xltype = xltypeStr;
xRes.val.str = buffer;
// Show the alert.
Excel12f(xlcAlert, 0, 1, (LPXLOPER12)&xRes);
return 1;
}