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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2007, 00:23   #11
Иринкаа
Пользователь
 
Регистрация: 11.11.2007
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Карась Посмотреть сообщение
Неужели процесс длится так долго, что нужно его прекращать?
Самое правильное это задать условие при котором процесс долженн завершиться и сверятся в конце каждого цикла.

Нет. Не долго. 1-1,5 минуты в зависимости от входных параметров.
Просто я хочу сделать ф-цию именно досрочного прерывания.
Иринкаа вне форума Ответить с цитированием
Старый 27.11.2007, 00:52   #12
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Если у вас продолжительная операция не представляет из себя цикла, а представляет из себя послежовательность вызовов процедур/функций, то прерывание подобной операции вы можете сделать путем:
при нажатии на кнопку отмены некому флагу (доступному всем процедурам и функциям, используемым в операции) присваивается некое значение ( ну скажем 1) соответственно вам придется во время вызовов процедур /функций (а возможно и внутри них самих: это зависит от продолжительности действия каждой) проверять статус флага и на основании этого делать вывод: продолжать дальнейшие действия или нет.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 27.11.2007, 08:53   #13
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Если будешь пытаться из циклов или процедур выйти в зависимости от значения флага, не забудь про Application.ProcessMessages
например:
Код:
...
Application.ProcessMessages;
if flag then break; // или exit
...
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 27.11.2007 в 09:02.
mutabor вне форума Ответить с цитированием
Старый 27.11.2007, 21:52   #14
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от Иринкаа Посмотреть сообщение
Нет. Не долго. 1-1,5 минуты в зависимости от входных параметров. Просто я хочу сделать ф-цию именно досрочного прерывания.
Если нужно надежное прерывание сложной процедуры в любом месте, то правильнее всего будет запустить ее отдельным потоком. Поток можно прервать в любой момент.
Jeni вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прерывания и asm в Си BOBAH13 Общие вопросы C/C++ 7 05.08.2008 15:52
прерывания sergei64_89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 22.04.2008 13:37