![]() |
|
![]() ![]() ![]() |
|
Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
вывожу в статус бар потом пишу Sleep и в статус бар выводиться только после слипа, а надо до, после задержки.
т. е. StatusBar1->Panels->Items[0]->Text = "Вывод текста"; Sleep(1000); не катит так как слип срабатывает раньше . --------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
|
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
использовать ф-ю Sleep в основном потоке GUI приложения неправильно, правильно использовать таймеры
|
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Это точно. Для этих целей предусмотрен хотя бы тот же Timer.
|
|||
|
||||
orthrus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 400 Регистрация: 30.10.2007 Где: г. Усть-Илимск(Ир кутская обл.) Репутация: 4 Всего: 16 |
А если сделать так:
то обновление статусбара произойдет до задержки -------------------- У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой ![]() |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Это сообщение отредактировал(а) Alca - 1.9.2008, 09:40 |
|||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
ну а чем это отличается от Sleep? Добавлено через 32 секунды и зачем создавать именованый объект? Добавлено через 1 минуту и 57 секунд в Builder-е есть удобные врапперы - TEvent и TTimer Добавлено через 4 минуты и 43 секунды проблема кода Alca, в том, что поток не сможет обрабатывать сообщения в течении секунды, для создания задержек для всяких gui эффектов, нужно использовать TTimer, который то-же использует сообщения windows |
||||
|
|||||
Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
ну допустим напишу я в таймере код, в нужный момен разрешу выполнение таймера, код выполнится - завершу таймер, а далше как вернуться в место откуда я таймер запускал? или предполагалось какое-то другое решение?
--------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
а что ты хотел сделать?
|
|||
|
||||
Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
Задержку=) В цикле после каждой итерации. --------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
Не надо никуда возврашаться.. Все что в таймере работает само по себе, а прога продолжает нормально функционировать дальше |
|||
|
||||
Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
вот именно, это сомнительная задержка основной код будет продолжаться - это таймер собственно.
--------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
Так зачем тебе тормозить основной поток ? Пусть идет себе дальше. А то действие которое планировалось с задержками, просто вызывать через промежутки, равные той задержки. Как говорится и волки целы, и овцы сыты )) |
|||
|
||||
Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
Бред! Никакое действие мну не надо вызывать через промежутки времени, с чего ты это взял? Мне надо остановить код чтоб пользователь смог рассмотреть то что ему вывелось в статус баре, и потом продолжить ибо дальше уже выводится другая надпись. Просто выше люди писали что в качестве задержки надо использовать таймер, не знаю что они имели виду, но походу не то что делает Sleep(). --------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
Учитесь нормально изъясняться и уважать остальных участников форума, в противном случае я сомневаюсь, что будут желающие Вам помочь. Можно седалать очередь и сбрасывать в нее все сообщения для статус бара. А по таймеру брать их оттуда и отображать на статус баре И прога тормозить не будет и сообщения будут видны пользователю нелкоторое время. Если подобное не подходит, то тогда необходимо ясное описание задачи , может кто нибудь и предложит хороший вариант. ![]() Выше уже сообщали, что тормозить основной поток нежелательно. А в таком случае надо или создавать свой поток , либо использовать таймер. Это сообщение отредактировал(а) mes - 3.9.2008, 19:50 |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
блин, неужели такая огромная проблема обновлять статус бар по таймеру...
![]() если не устраивает, делай в цикле Sleep(n) а затем Application->ProcessMessages(); но это уже быдлокод... вообще прочитай документацию по этой функции, а затем по сообщениям windows, в gui потоке, обработчики сообщений должны выполняться, а все что работает дольше чем пол секунды нужно выносить в другой поток, иначе интрфейс будет дерганый и неуклюжий... |
|||
|
||||
Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
Ага, тока мне не требуется ничего обновлять, у меня выполняется цикл и происходит задержка - 1сек. перед каждой итерацией дабы пользователь прикинул что произошло и возможно почитал статус бар, но там ничего не появляется потому как Sleep().. З. Ы: буду рефакторить другим боком. --------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
То что у тебя внутри цикла и вынеси в отдельную процедуру, вызываемую по таймеру и будет тебе счастие )) |
|||
|
||||
Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
ну да логично, спс +1
--------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |