Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 620

/ вопрос открыт /

Здравствуйте, Уважаемые Эксперты!

После того, как я из Delphi6 сохраняю и заполняю отчёт в Excel(2002), даже после его закрытия из программы(см.приложение), Excel остётся в резидентной памяти! Чем больше я сохраняю отчётов, тем больше строчек EXCEL появляется диспетчере задач Windows! Как сделать, чтобы этого не было? Спасибо!

Приложение:
  1. Var
  2. n,n2 : OleVariant;
  3. .....
  4.  
  5. n:=CreateOleObject('Excel.Application');
  6.  
  7. n2:=GetCurrentDir+'regionRYear_atm.xls';
  8. n.Workbooks.Add(n2);
  9. ....
  10.  
  11.  
  12.  
  13. ...
  14.  
  15.  
  16. n.close;
  17.  


RedMask Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

RedMask (статус: Посетитель), 13 июня 2007, 07:37 [#6]:

Спасибо за советы всем! Проблемы была именно в n2! А n2.close или n2.quit выдавала ошибку. Помогло n2:=Unassigned;
Шарайчук Сергей Олександрович

Шарайчук Сергей Олександрович (статус: 2-ой класс), 13 июня 2007, 10:27 [#7]:

to Вадим К:
1)Ошыбки есть у всех.
2)Програмно откривал Excel, считовал из нево нужную инфу, програмно закривал, и убивал ево в диспетчере.
3)Код исходника https://www.delphi-int.ru/download/file/162/ !!!
Я бы изменил мир, но Бог не дает исходники!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:33
Выполнено за 0.02 сек.