Russian Qt Forum

Qt => ActiveX => Тема начата: alex-v от Март 11, 2012, 09:22



Название: Как правильно освободить память?
Отправлено: alex-v от Март 11, 2012, 09:22
Генерирую excel-файл. Заполняю текстом. Сохраняю на диск. Закрываю, освобождаю все ресурсы как надо. Все ОК. Процесс excel завершается корректно.

Как только использую эту функцию для вставки картинок

Код:
void Excel::setCellPicture(QAxObject *worksheet, const QRect &rect, const QString &imgFilePath)
{
    QAxObject *shapes = worksheet->querySubObject("Shapes");

    if (shapes)
    {
        shapes->dynamicCall("AddPicture(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)", imgFilePath, false, true, rect.left(), rect.top(), rect.width(), rect.height());   
        shapes->clear();

        delete shapes;
    }
}

то после этого процесс excel остается в памяти, не закрывается пока я не завершаю программу.
От чего такое происходит? Вроде как ресурсы нормально освобождаются.


Название: Re: Как правильно освободить память?
Отправлено: alex-v от Март 11, 2012, 19:49
up


Название: Re: Как правильно освободить память?
Отправлено: CJ1 от Июнь 19, 2012, 12:10
Я делаю так
Код:
                // Закрываю Excel
                workbooks->dynamicCall("Close (Boolean)", false);
                excel->dynamicCall("Quit (void)");

И никаких проблем