Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> События и вечный цикл 
V
    Опции темы
JetBird
Дата 4.3.2009, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.9.2006

Репутация: нет
Всего: нет



Привет всем!

Наверное, ламерский вопрос задаю, т.к. в Дельфи мало программировал; суть вот какая: есть такой метод Application.Run, который передает управление в вечный цикл, позволяя приложению обрабатывать сообщения и т.д. Меж тем, в Дельфях все ориентировано на использование событий. Т.е. по нажатию кнопки возникает то, по приему пакета - сё. А если я желаю "вклиниться" в основной поток и добавить в него свой код? есть такая штука, как OnTimer, но она включается раз в N микросекунд, а мне бы надо, чтобы на каждом "шаге" выполнялась некоторая процедура. Как бы это сделать?
PM MAIL   Вверх
Rrader
  Дата 4.3.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



Пройдясь по петле, можно найти такую строчку:
Код

if Assigned(FOnMessage) then FOnMessage(Msg, Handled);

P.S. Зачем нужно вклиниваться?


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
vladimir74
Дата 4.3.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



внутри цикла
Код

Application.ProcessMessages

--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
JetBird
Дата 4.3.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.9.2006

Репутация: нет
Всего: нет



О, спасибо, Application.ProcessMessages - то, что надо. Вклиниваться в самом деле незачем.
PM MAIL   Вверх
Poseidon
Дата 5.3.2009, 00:34 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Или новички шибко умные пошли, или я отупел. Но никогда бы не догадался, что в первом сообщении спрашивалось о ProcessMessages.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Christoph
Дата 5.3.2009, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 1
Всего: 11



Цитата(Poseidon @ 5.3.2009,  00:34)
Или новички шибко умные пошли, или я отупел. Но никогда бы не догадался, что в первом сообщении спрашивалось о ProcessMessages.

Ответ Application.ProcessMessages дали на угад  smile 


--------------------
user posted image
PM MAIL ICQ   Вверх
Frees
Дата 5.3.2009, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



ОФФ
просто vladimir74 - телепат!


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
JetBird
Дата 5.3.2009, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.9.2006

Репутация: нет
Всего: нет



Ну-ну, зря вы так, товарищи smile
ProcessMessages решает данную проблему простейшим способом, и хотя вопрос был задан в общей форме, а ответ решает проблему лишь частично (например, если на форме будут 2 кнопки и в каждой будет цикл с processmessages, то при нажатии первой, а потом второй (во время работы цикла первой) нужный код будет выполняться не параллельно, а последовательно - сначала закончится цикл второй, а потом - первой), и тут, вероятно, помог бы совет "пройтись по петле и найти строчку с if (assigned(...))", чтобы сделать выполнение нужного кода в принципе независимым от внешних "возбудителей", не прерывать основной поток, а плавно в него интегрироваться. 
PM MAIL   Вверх
Poseidon
Дата 5.3.2009, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



JetBird, слушай, если ты все знаешь, то тему зачем создал?


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
vladimir74
Дата 5.3.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



Цитата(Poseidon @  4.3.2009,  22:34 Найти цитируемый пост)
Или новички шибко умные пошли, или я отупел. Но никогда бы не догадался, что в первом сообщении спрашивалось о ProcessMessages. 

ну этот форум не единственный, а вопросы везде повторяются  smile 
Цитата(Frees @  5.3.2009,  07:32 Найти цитируемый пост)
просто vladimir74 - телепат! 

бывают просветления в мозгУ  smile  smile 
Цитата(JetBird @  5.3.2009,  09:18 Найти цитируемый пост)
ProcessMessages решает данную проблему простейшим способом, и хотя вопрос был задан в общей форме, 

ну какой вопрос,такой ответ (это кстати подтверждает моя подпись smile ) 
Цитата(JetBird @  5.3.2009,  09:18 Найти цитируемый пост)
например, если на форме будут 2 кнопки и в каждой будет цикл с processmessages, то при нажатии первой, а потом второй (во время работы цикла первой) нужный код будет выполняться не параллельно

можно засунуть каждый цикл в отдельный поток...  smile

Добавлено через 57 секунд
Цитата(Christoph @  5.3.2009,  06:53 Найти цитируемый пост)

Ответ Application.ProcessMessages дали на угад  smile  

ну есть такая буква в этом слове  smile 
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
MetalFan
Дата 5.3.2009, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(vladimir74 @  5.3.2009,  12:33 Найти цитируемый пост)
можно засунуть каждый цикл в отдельный поток...  smile

и это будет, имхо, самое правильное решение smile 


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
vladimir74
Дата 5.3.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



Цитата(MetalFan @  5.3.2009,  11:01 Найти цитируемый пост)
и это будет, имхо, самое правильное решение smile 

вот теперь если я опять телепатнул, то буду не единственный. И притом при поддкржке старичков  smile  smile 

MetalFan, извени но мне почему то фраза Poseidon-а очень понравилась 
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
JetBird
Дата 5.3.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.9.2006

Репутация: нет
Всего: нет



Цитата(MetalFan @ 5.3.2009,  13:01)
Цитата(vladimir74 @  5.3.2009,  12:33 Найти цитируемый пост)
можно засунуть каждый цикл в отдельный поток...  smile

и это будет, имхо, самое правильное решение smile


а потом их придется синхронизировать.
PM MAIL   Вверх
vladimir74
Дата 5.3.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



Цитата(JetBird @  5.3.2009,  11:51 Найти цитируемый пост)
а потом их придется синхронизировать. 

Цитата(Poseidon @  5.3.2009,  09:24 Найти цитируемый пост)
JetBird, слушай, если ты все знаешь, то тему зачем создал? 

начинаю задаваться тем же вопросом.....

--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
JetBird
Дата 5.3.2009, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.9.2006

Репутация: нет
Всего: нет



Цитата(vladimir74 @ 5.3.2009,  14:14)
Цитата(JetBird @  5.3.2009,  11:51 Найти цитируемый пост)
а потом их придется синхронизировать. 

Цитата(Poseidon @  5.3.2009,  09:24 Найти цитируемый пост)
JetBird, слушай, если ты все знаешь, то тему зачем создал? 

начинаю задаваться тем же вопросом.....

блин, ну сорри. я в дельфях новичок, а не в программинге.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0972 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.