Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
ВнизКак ее остановить??? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c