Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Остановить процесс вычисления, По нажатию кнопки 
:(
    Опции темы
Санек
Дата 27.3.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.3.2006

Репутация: нет
Всего: нет



Я написал программу которая вычисляет одну фигню(неважно какую). Так при определенных параметрах вычислительный процесс может быть очень долгим. Как сделать так, чтобы пользователь мог остановить процесс вычисления кнопкой на форме. Заранее спасибо
PM MAIL   Вверх
Matematik
Дата 27.3.2006, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 17
Всего: 50



Заводишь глобальную переменную
var gStop:Boolean;
В начале вычисления делаешь ее false
gStop := False;
В цикле вычисления пишешь
Application.ProcessMessages;
if gStop then
begin
break;
end;

На событие нажатия на кнопку STOP пишешь
gStop := True;

Это сообщение отредактировал(а) Matematik - 27.3.2006, 10:04
PM MAIL WWW ICQ   Вверх
Санек
Дата 27.3.2006, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.3.2006

Репутация: нет
Всего: нет



спасибо огромное, все работает.
интересно а что делает Application.ProcessMessages;

PM MAIL   Вверх
Alexeis
Дата 27.3.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата

интересно а что делает Application.ProcessMessages;

обрабатывает полученные программой сообщения (за время работы от Application.ProcessMessages до Application.ProcessMessages или от начала процедуры до первого Application.ProcessMessages)


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
_hunter
Дата 27.3.2006, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



только этот подход -- не особо корректный -- при перетаскивании формы, ее сворачивании/разворачивании, ... код будет замирать ( что не есть гуд )
лучше вынести вычисления в поток и в нем смотреть флаг, выставляемый по нажатию на кнопку


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
bems
Дата 27.3.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(_hunter @ 27.3.2006, 10:59 Найти цитируемый пост)
лучше вынести вычисления в поток и в нем смотреть флаг, выставляемый по нажатию на кнопку
что не тред-сейф.
Добавлено @ 11:14
используй interlocked-функции


--------------------
Обижено школьников: 8
PM MAIL   Вверх
_hunter
Дата 27.3.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



Цитата(bems @ 27.3.2006, 10:13 Найти цитируемый пост)
что не тред-сейф

с какого перепуга?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
bems
Дата 27.3.2006, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(_hunter @ 27.3.2006, 11:53 Найти цитируемый пост)
с какого перепуга?
Ну меня мама в детстве учила, что когда один поток читает переменную, а другой в это же время пишет, то может получиться бяка. Или не то прочитаем, или не то запишем. Или (в основном) все нормально будет. Но вероятность бяки все-же остается. Когда я подрос, тому же самому меня научил и Джкфри Рихтер ))



--------------------
Обижено школьников: 8
PM MAIL   Вверх
_hunter
Дата 27.3.2006, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



это если два потока пишут а один читает ( и временами тоже пишет )
а если один читае а другой пишет да еще и один байт ( и нужен нам из него один бит ) все безопасно


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Демо
Дата 27.3.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(_hunter @ 27.3.2006, 12:54 Найти цитируемый пост)
это если два потока пишут


Достаточно одного;)


--------------------
    
PM MAIL ICQ Skype   Вверх
_hunter
Дата 27.3.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



с учетом:
Цитата(_hunter @ 27.3.2006, 11:54 Найти цитируемый пост)
и временами тоже пишет

?

кстати если два ( или больше ) потока пишут в один ресурс -- это тоже вполне потоково-безопасная операция smile


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Демо
Дата 27.3.2006, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(_hunter @ 27.3.2006, 13:49 Найти цитируемый пост)
кстати если два ( или больше ) потока пишут в один ресурс -- это тоже вполне потоково-безопасная операци


Это что, шутка такая??


--------------------
    
PM MAIL ICQ Skype   Вверх
_hunter
Дата 27.3.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



почему? я же нигде не писал о чтении... ;)


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Демо
Дата 27.3.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(_hunter @ 27.3.2006, 14:12 Найти цитируемый пост)
почему? я же нигде не писал о чтении... ;)


Ну тогда позволь возразить.

Цитата(_hunter @ 27.3.2006, 13:49 Найти цитируемый пост)
кстати если два ( или больше ) потока пишут в один ресурс -- это тоже вполне потоково-безопасная операция


В корне неверно.


--------------------
    
PM MAIL ICQ Skype   Вверх
_hunter
Дата 27.3.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



??? почему?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.5829 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.