xlFree
Aplica-se a: Excel 2013 | Office 2013 | Visual Studio
Usado para liberar recursos de memória alocados pelo Microsoft Excel ao criar o valor retornado XLOPER/ XLOPER12 em uma chamada para Excel4, Excel4v, Excel12 ou Excel12v. A função xlFree libera a memória auxiliar e redefine o ponteiro para NULL, mas não destrói outras partes doXLOPER12XLOPER/ .
Excel4(xlFree, 0, n, LPXLOPER px_1, ..., LPXLOPER px_n);
Excel12(xlFree, 0, n, LPXLOPER12 px_1, ..., LPXLOPER12 px_n);
Parâmetros
px_1, ..., px_n
Um ou maisXLOPER12XLOPER/ devem ser liberados. Nas versões do Excel até 2003, o número máximo de ponteiros que podem ser passados é 30. A partir do Excel 2007, isso é aumentado para 255.
Valor de propriedade/Valor de retorno
Essa função não retorna um valor.
Comentários
Você deve liberar cada XLOPER que você obtém como um valor retornado do Excel4 ou excel4v e cada XLOPER12 que você obtém como um valor retornado do Excel12 ou Excel12v se eles forem um dos seguintes tipos: xltypeStr, xltypeMulti ou xltypeRef. É sempre seguro liberar outros tipos, mesmo que eles não usem memória auxiliar, desde que você os tenha do Excel4 ou do Excel12.
Quando você estiver retornando ao Excel um ponteiro para umXLOPER12XLOPER/ que ainda contém memória alocada pelo Excel a ser liberada, você deve definir o xlbitXLFree para garantir que o Excel libere a memória.
Exemplo
Este exemplo chama GET. WORKSPACE(1) para retornar a plataforma na qual o Excel está em execução atualmente como uma cadeia de caracteres. O código copia essa cadeia de caracteres retornada em um buffer para uso posterior. O código coloca o buffer de volta no XLOPER12 para uso posterior com a função Excel. Por fim, o código exibe a cadeia de caracteres em uma caixa de alerta.
\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;
}