xlFree

Hace referencia a: Excel 2013 | Office 2013 | Visual Studio

Se usa para liberar recursos de memoria asignados por Microsoft Excel al crear el valor devuelto XLOPER/ XLOPER12 en una llamada a Excel4, Excel4v, Excel12 o Excel12v. La función xlFree libera la memoria auxiliar y restablece el puntero a NULL, pero no destruye otras partes delXLOPER12XLOPER/ .

Excel4(xlFree, 0, n, LPXLOPER px_1, ..., LPXLOPER px_n);
Excel12(xlFree, 0, n, LPXLOPER12 px_1, ..., LPXLOPER12 px_n);

Parameters

px_1, ..., px_n

Uno o varios XLOPER12 XLOPER/ que se van a liberar. En las versiones de Excel hasta 2003, el número máximo de punteros que se pueden pasar es 30. A partir de Excel 2007, se aumenta a 255.

Valor de la propiedad/valor devuelto

Esta función no devuelve un valor.

Comentarios

Debe liberar cada XLOPER que obtenga como valor devuelto de Excel4 o Excel4v y cada XLOPER12 que obtenga como valor devuelto de Excel12 o Excel12v si son uno de los tipos siguientes: xltypeStr, xltypeMulti o xltypeRef. Siempre es seguro liberar otros tipos incluso si no usan memoria auxiliar, siempre y cuando los tenga de Excel4 o Excel12.

Cuando vuelva a Excel un puntero a unXLOPER12XLOPER/ que todavía contiene memoria asignada por Excel que se va a liberar, debe establecer xlbitXLFree para asegurarse de que Excel libera la memoria.

Ejemplo

En este ejemplo se llama a GET. WORKSPACE(1) para devolver la plataforma en la que Excel se ejecuta actualmente como una cadena. El código copia esta cadena devuelta en un búfer para su uso posterior. El código vuelve a colocar el búfer en el XLOPER12 para su uso posterior con la función de Excel. Por último, el código muestra la cadena en un cuadro 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;
}

Vea también