Главная страница
    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.542 c
1-1092231820
Aleksandr.
2004-08-11 17:43
2004.08.29
У можно как-то у TList a сделать эффектное массовое удаление?


1-1092636340
Arhitektor
2004-08-16 10:05
2004.08.29
Каким образом можно получить доступ к файлу?


14-1092111393
pavel_pavel
2004-08-10 08:16
2004.08.29
Х У Д О Ж Н И К И


14-1091964547
Кириешки
2004-08-08 15:29
2004.08.29
Где в WinMe находится "настоящий" autoexec.bat ?


3-1091775556
ydv
2004-08-06 10:59
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский