xlFree

Область применения: Excel 2013 | Office 2013 | Visual Studio

Используется для освобождения ресурсов памяти, выделенных Microsoft Excel при создании возвращаемого значения XLOPER/ XLOPER12 при вызове Excel4, Excel4v, Excel12 или Excel12v. Функция xlFree освобождает вспомогательную память и сбрасывает указатель на значение NULL, но не уничтожает другие частиXLOPER12XLOPER/ .

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

Параметры

px_1, ..., px_n

Один или несколько XLOPER12 XLOPER/ будут освобождены. В версиях Excel до 2003 максимальное число указателей, которые можно передать, составляет 30. Начиная с Excel 2007 этот параметр увеличен до 255.

Значение свойства и возвращаемое значение

Эта функция не возвращает значение.

Замечания

Необходимо освободить все значения XLOPER , которые вы получаете в качестве возвращаемого значения из Excel4 или Excel4v , и все XLOPER12 , которые вы получаете в качестве возвращаемого значения из Excel12 или Excel12v , если они относятся к одному из следующих типов: xltypeStr, xltypeMulti или xltypeRef. Другие типы всегда безопасно освобождать, даже если они не используют вспомогательную память, если вы получили их из Excel4 или Excel12.

Если вы возвращаетесь в Excel указатель наXLOPER12XLOPER/ , который по-прежнему содержит память, выделенную Excel для освобождения, необходимо задать xlbitXLFree, чтобы обеспечить освобождение памяти в Excel.

Пример

В этом примере вызывается МЕТОД GET. WORKSPACE(1) для возврата платформы, на которой в настоящее время выполняется Excel в виде строки. Код копирует эту возвращенную строку в буфер для последующего использования. Код помещает буфер обратно в XLOPER12 для последующего использования с функцией Excel. Наконец, код отображает строку в поле оповещения.

\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;
}

См. также