1. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Первый товар уже в продаже: Консультация на тему ИБ от Ondrik8

    Скрыть объявление
  2. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Второй товар маркетплейса: Надёжная обфускация вашей программы от PingVinich

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

Вопрос по Ttimer

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем 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
    Сообщения:
    470
    Симпатии:
    0
    Я вообще программист на делфи, но посоветовал бы тебе при входе в обработчик онТаймер сделать что-то вроде:
    Timer1.Enabled=false; а в конце кода дописать Timer1.Enabled=flag;
    Ну соответственно обработчик для кнопки поставить
    flag=not flag.
    if (flag) {timer1.enabled=true; }
    З.Ы. Не будет работать только в том случае, если вычисления долгие, а пользователь быстро нажмет на кнопку два раза. Ну это легко исправить - ввести еще одну булевскую переменную и чуть подредактировать код. Надеюсь, идею понял, сам додумаешь, а то лень проверять... :)
     
  4. etc

    etc Гость

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

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