![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как убить приожение?
kaktus © (2004-12-03 14:58:00)Доброго всем суток времени!
У меня такая проблема:
при обработке события OnClose я выполняю следующие действия:
procedure TfMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
i : Integer;
FalseParam : OleVariant;
begin
FalseParam := False;
for i := 0 to 10 do
delTemp; //Очистка временной таблицы базы данных
WordApp.Quit(FalseParam);//Закрываю коннэкт с Word-ом
Application.Free; //Пробывал Destroy
end;
После всего этого процесс все еще висит в оперативке, и при последующем запуске ругается не красивыми словами мастдая типа: Допущена ошибка .... и т. д.
kaktus (2004-12-06 12:10:00) [1]>WordApplication.Disconnect сделали по окончании работы с >Word'ом?
Когда я такое делал у меня выскакивал меседж с предложением сохранить документ, а это мне надо меньше всего-понимаете я работаю с вордовским словарем для проверки синтаксиса вводимого текста в RichEdit1. Для этого я проделал следующее:
var
FalseParam:OleVariant;
begin
FalseParam := False;
...
WordApp.Quit(FalseParam);
end;
Меседж не появляется - ну всеравно мне не нравиться, что после программного завершения работы программы - ее процесс все еще висит в диспечере задач.
VMcL (2004-12-04 13:54:00) [2]>> kaktus (03.12.04 17:45) [11]
WordApplication.Disconnect сделали по окончании работы с Word'ом?
kaktus (2004-12-03 17:45:00) [3]Есть такой хороший не визуальный элемент управления как WordApplication и WordDocument - вот ими я и пользуюсь! Какое создание, какое обьявление????? Это не простые строки кода - а волшебные - я скажу так: с вордякой у меня проблем нет - закрывается как милинький! А вот форма - главная - не хочит киллица - по сути - сама форма хайдится, но не уничтожается.
VMcL (2004-12-03 17:25:00) [4]>> kaktus (03.12.04 16:09) [9]
Это не создание и не объявление, а просто какие-то две строки кода.
kaktus (2004-12-03 16:09:00) [5]WordApp.Connect;
WordDoc.ConnectTo(WordApp.Documents.Add(EmptyParam, EmptyParam));
Sergey_Masloff (2004-12-03 15:44:00) [6]kaktus (03.12.04 15:37) [7]
Ну покажи как ты создаешь свой WordApp - ты ж объявление не привел. С вариантом это если работаешь через позднее связывание (late binding) если через vtable непосредственно то интерфейс по другому высвободить надо. Вобщем, показывай все - как объявил как создал.
kaktus (2004-12-03 15:37:00) [7]>WordApp := Unassigned;
не работает!
[Error] main.pas(697): Incompatible types: 'TWordApplication' and 'Variant'
Sergey_Masloff (2004-12-03 15:32:00) [8]Тут имхо дело в следующем.
Имеем WordApp связаный с COM-объектом Word-а. Даем ему команду себя закрыть (при этом ссылка интерфейсная повисает). Затем закрываем приложение. Оно честно хочет сделать варианту АнЭссайн что приводит к обращению к интерфейсу реализация которого выгружена уже. С непредсказуемыми последствиями.
Это только предположение но думаю похоже на истину.
Sergey_Masloff (2004-12-03 15:29:00) [9]Вместо
WordApp.Quit()
сделай
WordApp := Unassigned;
Application.Free() не нужно
Verg (2004-12-03 15:13:00) [10]
> [3] kaktus (03.12.04 15:07)
Так может вопрос все же "почему-то по close не срабатывает", а не subj ?
А то, ведь я скажу - "нажми кнопку Power" и твой вопрос будет снят, не так ли?
kaktus (2004-12-03 15:07:00) [11]>Это-то зачем?
А затем что по клоуз не фига не срабатывает!
ssk (2004-12-03 15:04:00) [12]1. Application.Terminate
2. Halt
Verg (2004-12-03 15:04:00) [13]
> Application.Free; //Пробывал Destroy
Это-то зачем?