Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
34 / 34 / 21
Регистрация: 02.02.2012
Сообщений: 181

Задержка времени

02.11.2013, 15:40. Показов 4922. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Мне необходимо сделать задержку времени, чтобы перемещение элемента было помедленнее. Пробовала использовать Sleep(), но эта функция вешает всё приложение. Как можно по-другому сделать?
Вообще мне надо, чтобы при нажатии кнопки "рассчитать" высветились расчёты и началось движение круга, но в итоге получается, что расчёты не высвечиваются до тех пор, пока круг не закончит своё движение.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.11.2013, 15:40
Ответы с готовыми решениями:

Задержка времени в С++
Подскажите пожалуйста. В Microsoft Visual C++ 6.0 как и в остальных средах С++, задержка времени осуществляется функцией Sleep(); Но...

задержка времени
Господа програмисты не подскажите как задержать программу на определённое время.если можно самый примитивный исходник.заранее огромное...

Задержка на большое количество времени
Здравствуйте. Мне нужна большая задержка для программы, в районе 30 минут. Знаю, что для задержки можно использовать функцию Sleep, но...

9
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
02.11.2013, 15:54
TyLinka, можете таймер добавить. На каждое срабатывание будет происходить часть движения. Но если надо именно задержку, там вроде что то дописать нужно...
0
34 / 34 / 21
Регистрация: 02.02.2012
Сообщений: 181
02.11.2013, 16:59  [ТС]
Цитата Сообщение от Folko Посмотреть сообщение
TyLinka, можете таймер добавить. На каждое срабатывание будет происходить часть движения. Но если надо именно задержку, там вроде что то дописать нужно...
А можно про таймер поподробнее?
0
54 / 50 / 16
Регистрация: 14.10.2013
Сообщений: 161
02.11.2013, 17:05
TyLinka, вам нужно 2 потока создать:
1) движение круга
2) вывод расчетов

Делается это средствами WinAPI, функция CreateThread

Полезные сайты: http://www.vsokovikov.narod.ru... thread.htm , http://msdn.microsoft.com/en-u... s.85).aspx

P.S. а вообще почему бы сначала не вывести расчеты, а потом двигать круг)))
1
34 / 34 / 21
Регистрация: 02.02.2012
Сообщений: 181
02.11.2013, 17:38  [ТС]
Цитата Сообщение от rpsv Посмотреть сообщение
TyLinka, вам нужно 2 потока создать:
1) движение круга
2) вывод расчетов

Делается это средствами WinAPI, функция CreateThread

Полезные сайты: http://www.vsokovikov.narod.ru... thread.htm , http://msdn.microsoft.com/en-u... s.85).aspx

P.S. а вообще почему бы сначала не вывести расчеты, а потом двигать круг)))
Я делаю в windows forms. Если честно, я пыталась сначала вывести, а потом двигать, но не получилось
0
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
02.11.2013, 18:17
TyLinka, обычно есть объекты типа Timer. Он выносится на форму, у него есть набор параметров и событий. Вот задаете ему нужное время и он через каждый промежуток времени будет срабатывать. В событии срабатывания вы помещаете свой код, который, например сдвигает код. Готово)
1
34 / 34 / 21
Регистрация: 02.02.2012
Сообщений: 181
02.11.2013, 21:04  [ТС]
Цитата Сообщение от Folko Посмотреть сообщение
TyLinka, обычно есть объекты типа Timer. Он выносится на форму, у него есть набор параметров и событий. Вот задаете ему нужное время и он через каждый промежуток времени будет срабатывать. В событии срабатывания вы помещаете свой код, который, например сдвигает код. Готово)
А можно пример, пожалуйста? А то я что-то не очень понимаю, как это реализуется...
0
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
02.11.2013, 21:55
TyLinka, ну вот например (возьму за пример c++ builder). Выношу на форму объект Ttimer, затем в его свойстах указываю интервал 1000 (1 секунду). Затем кликаю на событие Timer или как то так... И прописываю там, например t = t + 2;
И все, теперь каждую секунду таймер срабатывает и выполняет t = t + 2. Ну и глобальная переменная t с каждой секундой меняет свое значение. Или как пример не t = t + 2, а написать там вызов функции обновления статуса выполнения какого либо действия.
Пример кода привести не смогу, не могу найти в qt таймера)

Добавлено через 7 минут
TyLinka, вот тут посмотрите, третья лабораторная работа, вроде инструкции по выполнению задачи с использованием таймера http://www.nulled.cc/threads/236172/
1
54 / 50 / 16
Регистрация: 14.10.2013
Сообщений: 161
04.11.2013, 15:56
Цитата Сообщение от TyLinka Посмотреть сообщение
Я делаю в windows forms. Если честно, я пыталась сначала вывести, а потом двигать, но не получилось
В WinForms есть класс Thread - это потоки!

Вот пример:
- после нажатия на кнопу:
1) в 1 нити элемент Label1 движется (вместо вам надо сделать круг)
2) в 2 нити считается уравнение и пишется в список ListBox1

* Sleep() - в функции замораживает ТОЛЬКО ту нить из которой она вызвана!

Вот ссылки полезные:

- Про Invoke: Как пользоваться событиями или как управлять формой из потока?
- Про Thread: http://msdn.microsoft.com/ru-r... .110).aspx

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//
// Заполняем список
//
public: void Filling_listbox()
{
    for (int i = 0; i < 100; i++)
    {
        //
        // Изменяем список из НЕ родительского потока
        //
        listBox1->Invoke(gcnew Action<double>(this, &Form1::Add_listbox),
                            Math::Sin(i));
        Thread::Sleep(100);
    }
}
 
public: void Add_listbox(double value)
{
    this->listBox1->Items->Add(value);
}
 
//
// Двигаем label
//
public: void Moving_label()
{
    for (int i = 0; i < 100; i++)
    {
        this->label1->Invoke(gcnew Action<int>(this, &Form1::Add_point_x), i);
        Thread::Sleep(10);
    }
}
 
public: void Add_point_x(int i)
{
    this->label1->Location = Point(i + 25, 25);
}
 
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
{
    Thread^ t1 = gcnew Thread( gcnew ThreadStart( this, &Form1::Filling_listbox ));
    Thread^ t2 = gcnew Thread( gcnew ThreadStart( this, &Form1::Moving_label ));
    //
    t1->Start();
    t2->Start();
}
Вложения
Тип файла: rar thread_test.rar (673.0 Кб, 9 просмотров)
1
34 / 34 / 21
Регистрация: 02.02.2012
Сообщений: 181
04.11.2013, 16:15  [ТС]
Спасибо, как-нибудь попробую так сделать, интересный вариант. Я сделала с timer пока.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.11.2013, 16:15
Помогаю со студенческими работами здесь

Как посчитать сколько времени прошло по заданному интервалу времени
Например сколько времени прошло от 10:00 до 9:59? часовой формат 23 часовой. Пробовал циклами самому дойти от начала до конца но по мне...

Задержка
Использую MinGW через NetBeans. Проблема состоит в том что такие команды как cin.get или же getchar() судя по всему игнорируются...

задержка
#include&lt;iostream&gt; int main() { char title; cin&gt;&gt;title; cout&lt;&lt;&quot;dlina texta=&quot;; cout&lt;&lt;title; int c; cin&gt;&gt;c; cout&lt;&lt;c; ...

Задержка в приложении
Привет всем ) подскажите пожалуйста что можно использовать в виде задержки в приложении вместо sleep так как если его использовать...

Задержка в цикле на С
Доброго времени суток! Подскажите как в консольном Борланде на С сделать пацзц в цикле, что бы выводимая информация была читабельна?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru