Главная страница
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.016 c
14-50932
MelkoSoft
2002-08-20 13:52
2002.09.16
Help


6-50898
bmai
2002-07-04 22:38
2002.09.16
release & renew IP


1-50688
fishca
2002-09-03 12:00
2002.09.16
Delphi7


1-50822
maxim2
2002-09-04 06:07
2002.09.16
И еще вопросик как узнать на какой строке находится курсор в Rich


1-50685
АлексейТР
2002-09-02 14:15
2002.09.16
Подскажите уважаемые Гуру, переношу приложение на другой