|
Вопрос # 620/ вопрос открыт / |
|
Здравствуйте, Уважаемые Эксперты!
После того, как я из Delphi6 сохраняю и заполняю отчёт в Excel(2002), даже после его закрытия из программы(см.приложение), Excel остётся в резидентной памяти! Чем больше я сохраняю отчётов, тем больше строчек EXCEL появляется диспетчере задач Windows! Как сделать, чтобы этого не было? Спасибо!
Приложение: Переключить в обычный режим- Var
- n,n2 : OleVariant;
- .....
-
- n:=CreateOleObject('Excel.Application');
-
- n2:=GetCurrentDir+'regionRYear_atm.xls';
- n.Workbooks.Add(n2);
- ....
-
-
-
- ...
-
-
- n.close;
-
 |
Вопрос задал: RedMask (статус: Посетитель)
Вопрос отправлен: 9 июня 2007, 07:35
Состояние вопроса: открыт, ответов: 3.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, RedMask!
Попробуйте вместо n.close; добавить такие две строки
n.Quit;
n := Unassigned;
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 10 июня 2007, 17:41
Оценка за ответ: 4
Комментарий к оценке: Проблемы была вовсе не в n,а в n2! Если я закрываю n.quit, то закрывается тот же документ! Но мысль верная! Спасибо!
|
Ответ #2. Отвечает эксперт: Помфюк Владимир Степанович
Здравствуйте, RedMask!
n2:=Unassigned;
или
n2:=nil;
тоже не помешает. Вобщем надо "отвязать" от Excel'а все переменные программы иначе они будут задерживать его завершение.
 |
Ответ отправил: Помфюк Владимир Степанович (статус: Абитуриент)
Время отправки: 11 июня 2007, 09:44
Оценка за ответ: 5
Комментарий к оценке: "n2:=Unassigned;"
Помогло!! Спасибо!
"n2:=nil;" - а так нельзя!
|
Ответ #3. Отвечает эксперт: Шарайчук Сергей Олександрович
Здравствуйте, RedMask!
Попробуй скачать иходник прогы которая убиваэт процесы https://www.delphi-int.ru/download/file/162/ измени код так чтоби она сама сканировала память после определьонного событея и убивала твой EXCEL. У меня была точно такая проблема, мне помогло, сечас не дома поетому код дать немогу, попробуй сам переделать.
 |
Ответ отправил: Шарайчук Сергей Олександрович (статус: 2-ой класс)
Время отправки: 11 июня 2007, 11:49
Оценка за ответ: 4
Комментарий к оценке: Я решил эту проблему несколько проще!
Но большое спасибо за помощь! Здорово бы, чтобы подумали над моей другой проблемой в следущем вопросе, там вполне подойдут подобные методы! =)))
|
Мини-форум вопроса
Всего сообщений: 7; последнее сообщение — 13 июня 2007, 10:27; участников в обсуждении: 3.
|
Вадим К (статус: Академик), 11 июня 2007, 11:56 [#1]:
to Шарайчук Сергій Олександрович
Зачем убивать то, что должно умереть само, если его попросить. К тому же, учитывая майкрософтовскую тенденцию помочь пользователю (восстановление после сбоя и подобное) неизвестно к чему ещё приведёт ваш метод
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Шарайчук Сергей Олександрович (статус: 2-ой класс), 11 июня 2007, 12:12 [#2]:
Неспорю иможно и испортить програму, но если ништо другое не помогает, можно и рискнуть!
Я бы изменил мир, но Бог не дает исходники!
|
|
Вадим К (статус: Академик), 11 июня 2007, 12:37 [#3]:
to Шарайчук Сергій Олександрович:
А где сказано,что ничего не помогает? Давайте дождёмся ответа автора.
С другой стороны, лучше уж висит ексель, чем твориться ниизвестно что.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Шарайчук Сергей Олександрович (статус: 2-ой класс), 11 июня 2007, 13:24 [#4]:
to Вадим К:
Я неговорю что ничево не помогаєт, я говорю "если". Я например делал прогу которая сама роботаєт с информациєй с екселя, тойсть просто ститовал её закривал, проблема била таже, просто исправил код так как мне нужно, и все работало, ничево неглючило.
Я бы изменил мир, но Бог не дает исходники!
|
|
Вадим К (статус: Академик), 11 июня 2007, 13:41 [#5]:
А) пишем грамотно.
Б) "просто ститовал её закривал"???
В) "просто исправил код так как мне нужно" Какой код, в Экселе?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
RedMask (статус: Посетитель), 13 июня 2007, 07:37 [#6]:
Спасибо за советы всем! Проблемы была именно в n2! А n2.close или n2.quit выдавала ошибку. Помогло n2:=Unassigned;
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|