Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1092221159
Руслан
2004-08-11 14:45
2004.08.29
Надо проигрывать WAV файлы из плей листа. Не могу додуматься


14-1091964298
ИМХО
2004-08-08 15:24
2004.08.29
Смотреть телевидение через компьютер


14-1092315003
Кириешки
2004-08-12 16:50
2004.08.29
У кого Opera стоит?


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


3-1091864650
serg128
2004-08-07 11:44
2004.08.29
Как сортировать по вычислимому полю?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский