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

Вниз

Помогите начинающему!!!   Найти похожие ветки 

 
Ionv ©   (2002-09-04 08:10) [0]

Как выйти из цикла нажатием кнопки. Пока цикл не закончится ее нажать нельзя. Говорят для этих целей применяется Application.ProcessMessage, но как он работает..? Если не затруднит покажите пример.
СПАСИБО ВСЕМ КТО ОТКЛИКНУЛСЯ!


 
MBo ©   (2002-09-04 08:22) [1]

в полном соответствии с названием - позволяет обработать сообщения. по нажатию кнопки выставляй некий флаг, а после
Application.ProcessMessage s проверяй его и break


 
VAP   (2002-09-04 08:53) [2]

procedure Breakes;
var
I: cardinal;
begin
for I:=0 to 100000000 do
begin
Application.ProcessMessages;
if Br=True then
begin
Form1.Edit1.Text:="Breaked";
Break;
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Br:=True;
end;


 
Леван   (2002-09-04 09:48) [3]

To VAP:
Одно несущественное замечание
вместо <<if Br=True then>> можно <<if Br then>>
Извините
Леван




 
Слесарь Матерящийся   (2002-09-04 10:36) [4]

Некрасивый стиль.

Можно делать так: один поток обслуживает интерфейс пользователя, а другой -- отрабатывает фоновую задачу, напр., этот самый цикл.

Программа остаётся управляемой.


 
PVOzerski ©   (2002-09-04 11:24) [5]

Вариант с processmessages заведомо медленнее, чем с двумя thread"ами. Я имею в виду скорость работы цикла. Но 1-й вариант будет работать и в win32s (если Delphi 2), а 2-й - только в 9x/ME и NT/2K/XP.


 
Micah'GF ©   (2002-09-04 12:01) [6]

>т будет работать и в win32s (если Delphi 2), а 2-й - только в 9x/ME и NT/ 2K/XP.
А вот у меня вопросик... я понимаю что такое 9x/ME/NT/2K/XP, а вот win32s чем от них отличается, ведь ИМХО они все поддерживают 32bit режим


 
Ionv ©   (2002-09-04 12:10) [7]

СПАСИБО ЗА ПОМОЩЬ!!!


 
Anatoly Podgoretsky ©   (2002-09-04 12:15) [8]

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


 
PVOzerski ©   (2002-09-04 13:02) [9]

2 Micah"GF ©:
Win32S не обеспечивает синхронное выполнение нескольких потоков внутри одного процесса.


 
Darker ©   (2002-09-04 14:07) [10]

Так... на всякий случай.

repeat
....
....
inc(i);
...
...
until ((i<1000000) or (not keypressed));


 
PVOzerski ©   (2002-09-04 14:51) [11]

2 Darker ©:
>until ((i<1000000) or (not keypressed));
Вот в этом-то самом keypressed и загвоздка. Нет ведь модуля crt в Delphi...


 
Darker ©   (2002-09-05 06:24) [12]

2 PVOzerski ©
А если смотреть на нажатие кнопки?
Типа if button.checked, а???


 
Ionv ©   (2002-09-05 07:02) [13]

Интересно, а как организовать два потока. И что такое thread. Где об этом можно узнать по подробнее.


 
MBo ©   (2002-09-05 07:13) [14]

>Ionv
1. Статья Кариха на этом сайте
2. Хелп и книги
3. http://mbo88.narod.ru/ToC.html


 
KSergey ©   (2002-09-05 08:04) [15]


> Ionv © (05.09.02 07:02)

В интернете, например. Где именно - спросите у яндекса. Ну или книжку почитайте. Любую. "Война и мир" тоже отчасти поможет - отвлекетесь хоть.


> Anatoly Podgoretsky © (04.09.02 12:15)
> на выше указанной задаче замедления просто не будет видно.


Будьте добры, растолкуйте эту фразу поподробнее для меня, если не трудно. А в каких случаях такой подход существенно "затормозит"? (в каких он просто не даст постоянной немедленной реакции - это понятно)



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

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

Наверх




Память: 0.5 MB
Время: 0.011 c
3-50602
NNN
2002-08-26 09:57
2002.09.16
loPartialKey


1-50799
yar
2002-09-03 16:40
2002.09.16
Кодировки


6-50885
savva
2002-07-10 10:21
2002.09.16
TidTCPClient vs. Proxy - или лыжи не едут или я... старый стал:))


3-50610
Kurt
2002-08-22 18:22
2002.09.16
Вопрос о QuickRep-е!! как мне расположить в области данных (QRBan


3-50629
wed
2002-08-26 15:43
2002.09.16
Помогите с запросом