Текущий архив: 2011.02.06;
Скачать: CL | DM;
ВнизОбработка при прерывании программы. Найти похожие ветки
← →
Василич (2010-11-15 07:53) [0]Приветствую.
Ситуация такая: Выполняется программа, подгружаются 2 вордовских документа, все это перелопачивается, вдруг внезапно вылезает ошибка (или я сам останавливаю выполнение программы) - а 2 ворда остаются в памяти висеть, приходиться вручную снимать. Можно ли какой-нибудь обработчик написать для таких ситуаций, снимать ворды из ОЗУ?
← →
И. Павел © (2010-11-15 08:01) [1]Просто всю работу с вордами заключайте в секцию:
try
<работа с Word>
finally
<все OLE закрываем>
<для всех ShellExec находим соответствующие вордовские окна и тоже их закрываем>
end;
Если работа с Word распределена по времени, то закрывать документы можно в OnException и OnClose.
← →
Anatoly Podgoretsky © (2010-11-15 09:10) [2]> Василич (15.11.2010 07:53:00) [0]
Ошибки надо обрабатывать.
← →
12 © (2010-11-15 10:26) [3]что-то типа
try
ExcelApp := CreateOleObject("Excel.Application");
ExcelApp.BLABLA;
...
except
on E:EOleError do
begin
if Pointer(IDispatch(ExcelApp)) <> nil then ExcelApp.quit;
E.Message := E.Message + " unit бла-бла, процедура бла-бла";
Raise;
end;
end;
?
← →
Василич (2010-11-15 13:06) [4]Кхм, этих try..except придеться кучу ставить по всей программе... Да и сомневаюсь что они сработают. Допустим прога уже инициализиаровала олеобъекты, они исправно работают, тут я делаю брейк (CTRL+F2) - прога останавливается моментально, а ворды висят в памяти. Жаль нельзя по событию сделать, onClose не то событие, это закрытие формы, а у меня break (CTRL+F2) или выдача ошибки.
← →
Anatoly Podgoretsky © (2010-11-15 13:10) [5]> Василич (15.11.2010 13:06:04) [4]
Программисту не положено бояться количества, боять надо кривонаписаных,
съэкономленых программ.
← →
Сергей М. © (2010-11-15 13:12) [6]
> сомневаюсь что они сработают
Сомнения высосаны из пальца ?
Или есть серьезные основания для этих сомнений ?
← →
И. Павел © (2010-11-15 13:16) [7]> [4] Василич (15.11.10 13:06)
Не сработает при жестком аварийном завершении, а CTRL + F4 - это просто закрытие окна - даже блокнот в этом случае сохранение предлагает.
← →
Василич (2010-11-15 18:52) [8]И.Павел - да нет же, в самой делфе я нажимаю CTRL + F2 - что и ЕСТЬ жесткое аварийное завершение, прерывание программы.
← →
Юрий Зотов © (2010-11-15 19:18) [9]
> Василич (15.11.10 18:52) [8]
Вы путаете прерывание программы дебаггером и юзером. Это не одно и то же, так что все будет нормально.
← →
Василич (2010-11-15 19:35) [10]CTRL+F2 - program reset. Поможет ли от него try..except?
← →
Василич (2010-11-15 19:36) [11]Юрий Зотов, ок попробую try.
← →
Дмитрий Белькевич (2010-11-15 20:56) [12]
> CTRL+F2 - program reset. Поможет ли от него try..except?
У юзера контрола-эфдва нету.
← →
Плохиш © (2010-11-15 21:23) [13]
> Василич (15.11.10 19:35) [10]
>
> CTRL+F2 - program reset. Поможет ли от него try..except?
>
От этого никакие ухищрения в программе не помогут.
PS. Не с той проблемой паришься.
← →
Плохиш © (2010-11-15 21:24) [14]
> Дмитрий Белькевич (15.11.10 20:56) [12]
>
>
> > CTRL+F2 - program reset. Поможет ли от него try..except?
>
>
>
> У юзера контрола-эфдва нету.
>
У меня, как юзера, есть менеджер процессов, от него ваши ухищрения тоже не помогут.
← →
Юрий Зотов © (2010-11-15 21:47) [15]
> Василич (15.11.10 19:35) [10]
> CTRL+F2 - program reset. Поможет ли от него try..except?
Конечно не поможет. Программа же запущена из IDE и работает под управлением отладчика - он ее и прерывает.
Но ведь у юзера нет отладчика, не так ли? Он-то ведь этого сделать не сможет.
← →
Германн © (2010-11-15 22:00) [16]
> У меня, как юзера, есть менеджер процессов, от него ваши
> ухищрения тоже не помогут.
>
Эт точно. :)
← →
Leonid Troyanovsky © (2010-11-15 22:46) [17]
> Германн © (15.11.10 22:00) [16]
> Эт точно. :)
У нас - Диспетчер задач or Task manager у других.
--
Regards, LVT.
← →
Германн © (2010-11-16 00:53) [18]
> Leonid Troyanovsky © (15.11.10 22:46) [17]
В отличие от вас с Плохишом я практически не знаю немецкий. Поэтому просто процитировал Плохиша, не обращая внимания на тонкости перевода. :)
P.S.
<offtop>
В плане общей терминологии меня больше заинтересовала вот эта заметка:
http://www.transl-gunsmoker.ru/2008/11/blog-post_4239.html
Как же теперь грамотно формулировать вопрос про "там где часики"?
:)
</offtop>
← →
Василич (2010-11-16 05:50) [19]Моя программа не нужна юзерам, она не для широкого круга, только для меня, я и юзер, и кодер, и тестер и все остальное. Ну как и думал, что try не поможет, просто была маленькая надежда что есть какая-то маленькая лазейка для фикса этой неудобности ;) Всем привет и спасибо.
← →
Плохиш © (2010-11-16 13:25) [20]
> просто была маленькая надежда что есть какая-то маленькая
> лазейка для фикса этой неудобности
Подумай, много ли ты успеешь выполнить действий после выстрела в голову?
← →
Дмитрий Белькевич (2010-11-16 19:00) [21]
> У меня, как юзера, есть менеджер процессов, от него ваши
> ухищрения тоже не помогут.
У тебя, как у юзера не должно быть прав на менеджер процессов. А если есть - то админу по рукам. А если ты сам и админ - то сам себе злой буратино.
Страницы: 1 вся ветка
Текущий архив: 2011.02.06;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.004 c