1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Вопрос по Ttimer

Тема в разделе "С и С++", создана пользователем starbreaker, 4 фев 2009.

Статус темы:
Закрыта.
  1. starbreaker

    starbreaker Гость

    Репутация:
    0
    Здравствуйте! Есть следующая задача (в общих чертах): строиться график некоторой функции, зависящей от времени, причем отображение производится по мере вычисления новых значений, то есть пользователь видит как график непосредственно рисуется по точкам. Причем вычисления могут идти, в принципе, бесконечно, пока пользователь не остановит вычисления. Я реализовал это с помощью TTimer следующим образом: с каждым срабатыванием таймера вычисляется новое значение функции, где аргумент времени находится в прямой зависимости от интервала таймера: t += t + Timer1->Interval, затем значение рисуется на экране; а при нажатии пользователем соответствующей кнопки устанавливается Timer1->Enabled = false и вычисления останавливаются.
    Оно вроде всё неплохо работает, но при том что сама функция весьма сложная, возникает следующий вопрос: что будет, если интервал срабатывания таймера меньше, чем то время, за которое вычисляется значение функции? То есть таймер сработал, началось вычисление, прошел заданный интервал времени, но значения функции ещё не вычислились, а уже должно выполниться следующее срабатывание таймера. Как в таком случае быть?
     
  2. etc

    etc Гость

    Репутация:
    0
    Ничего не будет, никак не быть.
     
  3. Vadik(R)

    Vadik(R) Well-Known Member

    Репутация:
    0
    Регистрация:
    12 дек 2007
    Сообщения:
    469
    Симпатии:
    0
    Я вообще программист на делфи, но посоветовал бы тебе при входе в обработчик онТаймер сделать что-то вроде:
    Timer1.Enabled=false; а в конце кода дописать Timer1.Enabled=flag;
    Ну соответственно обработчик для кнопки поставить
    flag=not flag.
    if (flag) {timer1.enabled=true; }
    З.Ы. Не будет работать только в том случае, если вычисления долгие, а пользователь быстро нажмет на кнопку два раза. Ну это легко исправить - ввести еще одну булевскую переменную и чуть подредактировать код. Надеюсь, идею понял, сам додумаешь, а то лень проверять... :)
     
  4. etc

    etc Гость

    Репутация:
    0
    Это все ненадо.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей