Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

Как ее остановить???   Найти похожие ветки 

 
Voland777   (2004-08-11 15:13) [0]

С кнопки в форме запускается процедура которая в цикле операторами ReadLN читает строки текстового файла. Процесс довольно длительный и хотелось бы по Esc его останавливать при необходимости. Но анализ в процедуре вложенной в цикл : IF Key = 27 -> выход из цикла - игнорируется! Почему?


 
Digitman ©   (2004-08-11 15:15) [1]

ты код цикла-то приведи ..


 
KSergey ©   (2004-08-11 15:17) [2]

Application.ProcessMessages


 
Боян Георгиев   (2004-08-11 15:19) [3]

for i := 1 to n do
 begin
 ...
 ProcessMessages;
 end;


 
Mihey_temporary ©   (2004-08-11 15:32) [4]

Используй потоки


 
46_55_41_44 ©   (2004-08-11 16:53) [5]

Объяви глобальную переменную скажем StopCycle : Boolean;
в FormCreate дай ей значение StopCycle := False; (не обязательно)

Потом...
В свойствах формы KeyPreview установи на True;
Затем в Form1.OnKeyDown напиши
if Key = 27 then
 StopCycle := True;
========================
Потом впиши в цикл
for
begin
 if StopCycle then
 begin
   StopCycle := False;
   Break;
 end;
end
(может repeat until или while без разницы!)

и все... Наслаждайся!! :)))


 
KSergey ©   (2004-08-11 16:57) [6]

> [5] 46_55_41_44 ©   (11.08.04 16:53)
> и все... Наслаждайся!! :)))

Не обманывайте человека.


 
MacroDenS ©   (2004-08-11 17:01) [7]

лечше все же потоки...


 
KSergey ©   (2004-08-11 17:02) [8]

> [7] MacroDenS ©   (11.08.04 17:01)
> лечше все же потоки...

Готов спорить.
Хотя не в этом пока суть, по-моему.


 
MacroDenS ©   (2004-08-11 17:05) [9]

поспорить-то конечно можно...
но по сравнению с [5], потоки все же лучше.


 
KSergey ©   (2004-08-11 17:06) [10]

Не, не буду спорить
Надоело
Уже не раз спорили, каждый при своем остался ;)


 
MacroDenS ©   (2004-08-11 17:08) [11]

ага, так может все же стоит уже прийти к общему, обоюдному мнению???


 
KSergey ©   (2004-08-11 17:11) [12]

Нет его, увы...


 
MacroDenS ©   (2004-08-11 17:14) [13]

А когда пива много???


 
Sandman25 ©   (2004-08-11 17:17) [14]

Объясните мне, тупому, чем плох вариант [5].


 
MacroDenS ©   (2004-08-11 17:21) [15]

1. если цикл мощный, то для такого метода нужно ProcessMessages еще ставить, что бы события до формы достучаться могли...
2. будет заторможенность цикла...


 
Sandman25 ©   (2004-08-11 17:30) [16]

1. И что в этом плохого? Пускай пользователь дергает мышь, если ему охота.
2. А как иначе? Хотим добавить новую возможность, но без цены за это? Золотое правило программирования :)


 
ALS ©   (2004-08-11 17:31) [17]

Можно вставить в цикл:

  ...
  Application.ProcessMessages;
  if (GetKeyState(VK_Escape) and 128) = 128 then Break;
  ...


 
Мастер ©   (2004-08-11 17:36) [18]

>Sandman25 ©   (11.08.04 17:30) [16]
> 1. И что в этом плохого? Пускай пользователь дергает мышь,
> если ему охота.


Неприемлимо в случае критичных к скорости вычислений.

2. А как иначе? Хотим добавить новую возможность, но без цены за это? Золотое правило программирования :)

Если можно сделать с наименьшими потерями в производительности, то почему не сделать правильно?


 
Sandman25 ©   (2004-08-11 17:41) [19]

[18] Мастер ©   (11.08.04 17:36)

1. В таком случае нужно СУБД использовать, а не из файла по строке читать.
2. Согласен. Но ведь не написали, как именно. Вдруг поток только замедлит работу.


 
Мастер ©   (2004-08-11 17:43) [20]

>Sandman25 ©   (11.08.04 17:41) [19]
У меня тоже похожая задача возникала-)

Например чтение протоколов работы программ, обработка(преобразование) и добавление в БД.



Страницы: 1 вся ветка

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.026 c
1-1092590461
hawkins
2004-08-15 21:21
2004.08.29
У меня проблема с MDI окном...


14-1091918502
GanibalLector
2004-08-08 02:41
2004.08.29
July TAXI


14-1092013180
Sergey Kaminski
2004-08-09 04:59
2004.08.29
Дурацкие законы


1-1092190939
Dim!S
2004-08-11 06:22
2004.08.29
Undeclarated identifier: MB_YESNO


14-1092117931
Jenek
2004-08-10 10:05
2004.08.29
Температура Процессора