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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как остановить цикл for, от клавиши или кнопки 
:(
    Опции темы
Serhik_z
  Дата 3.3.2005, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 108
Регистрация: 4.12.2004

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




Как остановить цикл по нажатии кнопки button (новая кнопка),
Можно и ту которая запускает цикл,
или от клавиши #32 пробел

Код

// вычисление
v:=sin(((k+i/60)*pi)/180)*4.0425/m;
for aa:=20 to 100 do
  for bb:=20 to 100 do
    for cc:=20 to 100 do
      for dd:=20 to 100 do
      if FormatFloat('0.00000',(aa*bb)/(cc*dd)) = FormatFloat('0.00000',v) then
        if (aa<>bb) and (cc<>dd) then
         Form5.Memo1.Lines.Add(Format('  Результат:  %d x %d / %d x %d',[aa,bb,cc,dd]));

end;

smile
PM MAIL   Вверх
maxim1000
Дата 3.3.2005, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



если при вычислениях хочется реагировать на какие-то события, есть два выхода:
1. время от времени вызывать обработку событий из этого страшного цикла (если я не ошибаюсь, Application.ProcessMessages)
2. запустить цикл в отдельном потоке
в обоих вариантах лучше оформить вычислительную процедуру в виде отдельной функции (во втором - не лучше, а обязательно smile )
(1) при нажатии на кнопку изменять значение какого-нибдуь флажка, после обработки сообщений проверять этот флажок, если true, то exit
(2) при нажатии на кнопку просто убивать поток (так просто может не получиться: возможно, будут заморочки с доступом к Memo)


--------------------
qqq
PM WWW   Вверх
Tsume
Дата 3.3.2005, 14:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Переменная булева, отвечающая за то, нажата или нет кнопка. В цикле Application.ProcessMessages, чтобы нажатие на кнопке отработалось и if твоя переменная then Break (или exit, по смылу и вкусу). На обработчике нажатия кнопки выставляешь свою переменную. Перед цикло обнуляешь ее. И ВСЕ!
  Вверх
Serhik_z
Дата 3.3.2005, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 108
Регистрация: 4.12.2004

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



Можно по подробней и с примером.
smile
PM MAIL   Вверх
Bes
Дата 3.3.2005, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сделать репитом и в условии выхода проверять переменную, которая устанавливается по нажатию клавиши.
PM MAIL   Вверх
Serhik_z
Дата 3.3.2005, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 108
Регистрация: 4.12.2004

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



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


..::Свирепый Кодер::..
**


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

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



например делаеш глобальную переменную
var
b: boolean;

по нажатию кнопки
b:=true;

в цикле пишеш
if b then
begin
b:=false;
exit;
end;

ток вот ты кнопочку нажать-то не сможеш поставь ещё
application.ProcessMessages; в цикле
а ещё лучше в отдельном потоке этот цикл сделай)

Это сообщение отредактировал(а) FRAGNATIC - 3.3.2005, 23:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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