| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > События и вечный цикл |
| Автор: JetBird 4.3.2009, 13:39 |
| Привет всем! Наверное, ламерский вопрос задаю, т.к. в Дельфи мало программировал; суть вот какая: есть такой метод Application.Run, который передает управление в вечный цикл, позволяя приложению обрабатывать сообщения и т.д. Меж тем, в Дельфях все ориентировано на использование событий. Т.е. по нажатию кнопки возникает то, по приему пакета - сё. А если я желаю "вклиниться" в основной поток и добавить в него свой код? есть такая штука, как OnTimer, но она включается раз в N микросекунд, а мне бы надо, чтобы на каждом "шаге" выполнялась некоторая процедура. Как бы это сделать? |
| Автор: Rrader 4.3.2009, 14:09 | ||
Пройдясь по петле, можно найти такую строчку:
P.S. Зачем нужно вклиниваться? |
| Автор: vladimir74 4.3.2009, 14:14 | ||
внутри цикла
|
| Автор: JetBird 4.3.2009, 14:29 |
| О, спасибо, Application.ProcessMessages - то, что надо. Вклиниваться в самом деле незачем. |
| Автор: Poseidon 5.3.2009, 00:34 |
| Или новички шибко умные пошли, или я отупел. Но никогда бы не догадался, что в первом сообщении спрашивалось о ProcessMessages. |
| Автор: Christoph 5.3.2009, 08:53 | ||
Ответ Application.ProcessMessages дали на угад |
| Автор: Frees 5.3.2009, 09:32 |
| ОФФ просто vladimir74 - телепат! |
| Автор: JetBird 5.3.2009, 11:18 |
| Ну-ну, зря вы так, товарищи ProcessMessages решает данную проблему простейшим способом, и хотя вопрос был задан в общей форме, а ответ решает проблему лишь частично (например, если на форме будут 2 кнопки и в каждой будет цикл с processmessages, то при нажатии первой, а потом второй (во время работы цикла первой) нужный код будет выполняться не параллельно, а последовательно - сначала закончится цикл второй, а потом - первой), и тут, вероятно, помог бы совет "пройтись по петле и найти строчку с if (assigned(...))", чтобы сделать выполнение нужного кода в принципе независимым от внешних "возбудителей", не прерывать основной поток, а плавно в него интегрироваться. |
| Автор: Poseidon 5.3.2009, 11:24 |
| JetBird, слушай, если ты все знаешь, то тему зачем создал? |
| Автор: MetalFan 5.3.2009, 13:01 |
и это будет, имхо, самое правильное решение |
| Автор: vladimir74 5.3.2009, 13:37 |
вот теперь если я опять телепатнул, то буду не единственный. И притом при поддкржке старичков MetalFan, извени но мне почему то фраза Poseidon-а очень понравилась |
| Автор: JetBird 5.3.2009, 13:51 | ||
а потом их придется синхронизировать. |
| Автор: vladimir74 5.3.2009, 14:14 |
начинаю задаваться тем же вопросом..... |
| Автор: JetBird 5.3.2009, 14:39 | ||
блин, ну сорри. я в дельфях новичок, а не в программинге. |
| Автор: MetalFan 5.3.2009, 14:45 |
странное заявление. а что в этом сложного? |
| Автор: JetBird 5.3.2009, 20:34 | ||
А зачем что-то делать, если можно не делать этого? |
| Автор: MetalFan 5.3.2009, 22:27 |
ага, проще свалить все в кучу в главный поток и понавставлять ProcessMessages'ов |