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