Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2012, 17:33   #1
Aleksandr_59
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 77
По умолчанию Безусловное завершение работы приложения

Программа работает с веб-камерой.
В цикле копирует картинку. Если по каким-то причинам не завершить цикл и не закрыть камеру процедурой:

Код:
begin
  if hWndC <> 0 then
  begin
    SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);  //"отключаемся" от веб-камеры
    hWndC := 0;
  end;
end;
то команда Application.Terminate не работает, приложение не закрывается. Как безусловно завершить работу приложения?
Aleksandr_59 вне форума Ответить с цитированием
Старый 12.04.2012, 17:34   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а надо завершать работу по человечески.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.04.2012, 17:46   #3
Aleksandr_59
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 77
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а надо завершать работу по человечески.
Логично... Универсальный совет: хочешь, чтобы прога работала нормально, пиши её без ошибок. И ведь сразу не догадаешся.
Aleksandr_59 вне форума Ответить с цитированием
Старый 12.04.2012, 20:54   #4
RinatV
Пользователь
 
Регистрация: 06.07.2009
Сообщений: 27
По умолчанию

В OnClose выставь флаг и используй его для завершения вечного цикла
RinatV вне форума Ответить с цитированием
Старый 12.04.2012, 21:38   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В цикле копирует картинку.
А может этот цикл в поток стоит вывалить?
Цитата:
команда Application.Terminate не работает,
Не удивительно. Этот метод всего лишь запрашивает у винды разрешения корректно завершится, но к самому завершению имеет лишь косвенное отношение в отличии от ExitProcess или Halt (который является оберткой для первой.)
Цитата:
И ведь сразу не догадаешся.
А ведь совет действительно верный - Винда не приветствует вольное завершение, и на то есть причины.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.04.2012, 17:24   #6
Aleksandr_59
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 77
По умолчанию

В цикле чтения картинки из веб-камеры используется конструкция

While bScan do

Переменнная bScan глобальная булевого типа, по нажатию кнопки или срабатыванию таймера цикл должен прекратиться через установку этой переменной в false. Это работает, но как-то нестабильно. Такое ощущение, что программа на разных компьютерах не всегда "дотягивется" до этой переменной, из-за этого не могу закрыть программу и прочие "неудобства".
Я понимаю, что надо искать причину, но мыслей уже никаких. Только принудительно закрыть прогу и снова перезапустить, всё восстанавливается.
Aleksandr_59 вне форума Ответить с цитированием
Старый 13.04.2012, 20:53   #7
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

В конце цикла добавьте строчку:
Код:
Application.ProcessMessages;
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Завершение работы Windows tsar_ Общие вопросы Delphi 1 23.03.2011 20:24
Pipe,завершение приложения Скарам Помощь студентам 3 31.03.2010 12:56
Завершение приложения lenivec Общие вопросы Delphi 16 05.01.2008 15:23
Завершение приложения, вместе с ОС John_chek Общие вопросы Delphi 5 08.06.2007 16:00
завершение работы оператора If Noor Общие вопросы C/C++ 1 14.03.2007 10:07