TExcelApplication
От: A3  
Дата: 13.12.02 16:13
Оценка:
Добрый вечер. Возник вопрос при работе на СВ5 с TExcelApplication. Как сделать в консольной программке, чтобы Ексель (в программе объект создается динамически) после закрытия программы не закрывался. Если я не освобождаю память из-под объекта, Ексель не закрывается, но впоследствии при обычном закрытии ругается на недопустимую операцию. Подскажите кто-нибудь, как правильно все сделать. Заранее спасибо.
Re: TExcelApplication
От: Dym On Россия  
Дата: 15.12.02 07:18
Оценка:
Попробуй освободить интерфейсы методом Release() перед зарытием проги.
При чем освобождению подлежат все COM-интерфейсы вызывавшиеся в программе (все Range'ы, Workbook'и, Worksheet'ы и т.п.).
Счастье — это Glück!
Re: TExcelApplication
От: Vsim  
Дата: 15.12.02 14:04
Оценка:
Здравствуйте, A3, Вы писали:

A3>Добрый вечер. Возник вопрос при работе на СВ5 с TExcelApplication. Как сделать в консольной программке, чтобы Ексель (в программе объект создается динамически) после закрытия программы не закрывался. Если я не освобождаю память из-под объекта, Ексель не закрывается, но впоследствии при обычном закрытии ругается на недопустимую операцию. Подскажите кто-нибудь, как правильно все сделать. Заранее спасибо.



В свое время хотел того же от Word. К конце концов не стал кидать на форму
компонент стандартные компоненты, а написал в процедуре формирования отчета так:

void __fastcall TForm1::DoRep()
{
TWordApplication* WordApplication=new TWordApplication(NULL);
TWordDocument* WordDocument=new TWordDocument(NULL);
и т.п.
//непосредственно формирование отчета
WordApplication->Visible=true;
}
Суть: Объекты необходимых классов формируются динамически и не вызывать для них delete и методы Release иначе все будет закрыватся. Понимаю что не очень корректно, но по крайне мере после закрытия программы Word остается на месте и потот никаких ошибок не возникает. Думаю что и для Excel подойдет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.