Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-50761
DDA
2002-09-06 08:26
2002.09.16
создание сложных компонентов


4-51034
Shur_ap
2002-07-23 21:52
2002.09.16
Обновить tray


8-50865
Master Denis
2002-05-14 16:26
2002.09.16
Почему виснет DirectDraw???


14-50915
Ferrari_the_best
2002-08-21 03:22
2002.09.16
Ответ на Helpa нужна!!!!!!


1-50754
Asderg
2002-09-04 05:56
2002.09.16
как засунуть деревце в файл?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский