05:44

Таймер

Всем привет!

Поможете новичку-любителю написать программу "таймер"?
Язык - С++, среда - Borland.

Комментарии
26.04.2010 в 07:54

Помочь - это написать за вас, правильно понимаю?
26.04.2010 в 10:09

Borland - это не среда, а компания.
Речь идет о C++Builder? Если да, то:
На вкладке System палитры компонентов есть компонент Timer (там часы нарисованы). Переместите его на форму.
Потом прочитайте небольшую статью про таймер в C++Builder/Delphi: статья
Если после прочтения этой статьи останутся вопросы - пишите.

PS: Еще вот эта статья понравилась. Она на английском, но разобраться не сложно. В программе описывается создание светофора :)
27.04.2010 в 05:21

Помочь - это написать за вас, правильно понимаю?
Нет, это помочь оптимизировать процесс обучения. Помочь найти и отобрать только те материалы, изучение которых наиболее быстро приведёт к решению данной задачи.
Хотя бы, помочь правильно подобрать ключевые слова для поиска.

Спасибо mr Gray! К сожалению, мне всё равно осталось не ясно, как создать именно программу-таймер с функцией паузы?
P.S. Необязательно использовать именно C++Builder, как инструмент разработки, просто у меня, пока, это единственный компилятор.
27.04.2010 в 07:13

_Dimitriy
Ну, давайте тогда по шагам:
1. Создаем глобальную переменную KolSec типа integer. В ней будем хранить показания таймера.
2. Размещаем на форме кнопку (класс TButton) и задаем ее свойство Caption = ‘старт/пауза’.
3. Размещаем на форме таймер (класс TTimer, вкладка System), задаем его свойство Enabled = false (тогда при создании формы таймер будет приостановлен). Свойство Interval указывает, через сколько миллисекунд будет производиться очередное срабатывание таймера. Его можно не менять и оставить равным 1000 мс = 1 сек.
4. Дважды щелкаем на помещенный на форму таймер левой кнопкой мыши – мы попадем в обработчик события OnTimer. Это событие возникает каждую секунду (поэтому он и называется таймером). В этом событии мы должны увеличить KolSek на единицу (так как таймер отсчитал очередную секунду) и вывести показания таймера, например в строке заголовка формы:
KolSek++;
Caption = IntToStr(KolSek);
5. Снова возвращаемся на форму и дважды щелкаем на размещенную на ней кнопку.
6. Мы попали в обработчик события OnClick – в нем указывается код, который будет выполняться при каждом нажатии на кнопку. Кнопка будет менять состояние таймера (включен/выключен) на противоположное:
Timer1->Enabled = !Timer1->Enabled;
7. Теперь можно усложнить секундомер – сделать так, чтобы он выводил не только секунды, но и минуты, часы.

PS: при определенных условиях TTimer может не срабатывать. Так что для создания таймера лучше использовать способ посложнее: при старте таймера запоминать, сколько сейчас времени, и при срабатывании таймера показывать – сколько времени прошло. Еще можно использовать более точные таймеры – например,мультимедийный.
28.04.2010 в 03:41

Создать глобальню переменную - это её просто объявить в начале программы, сразу после заголовочных файлов?
integer KolSec;
28.04.2010 в 09:18

_Dimitriy
Переменную нужно создать так: int KolSec;

Вот вам пример простого секундомера: скачать.

Я вам советую прочитать какой-нибудь самоучитель по C++Builder. В таких книгах разбираются основы работы с VCL, и примеры использования таймера там тоже есть.
28.04.2010 в 16:59

Спасибо mr Gray! Всё же, мне нужен не секундомер, а именно таймер (обратного отсчёта). Если встретите где-нить исходник, буду благодарен.
Пересмотрел несколько сайтов по запросу "C++Builder самоучитель" (скачал несколько книг). Проблема остаётся такая же, как и была, не хочется читать всё вподряд. Или, это обязательно, что нужно выйти на некий базовый уровень, после которого подобные вопросы отпадают сами?
28.04.2010 в 18:59

Вот переделанный таймер - начальное время читается из файла in.txt в папке программы: скачать.

не хочется читать всё вподряд
Зачем все подряд? Откройте первую из скачанных книг на любой странице - почитайте немного - если написано доходчиво и вам нравится манера повествования - выбирайте этот самоучитель и читайте его. Если не понравился - ищите другой.
29.04.2010 в 03:43

Вопрос, ведь, не в том, нравицо/не нравицо, при желании можно и разобраться, вопрос в том, смогу ли я решить поставленную задачу, после ознакомления с данным материалом?
29.04.2010 в 09:38

_Dimitriy
Я же вам скинул исправленный таймер с обратным отсчетом. Если это не то, что нужно - скажите, и я его переделаю.

вопрос в том, смогу ли я решить поставленную задачу, после ознакомления с данным материалом?
Я вам предлагал статьи и писал пошаговую инструкцию. Если этого не достаточно - лучше прочитать самоучитель по C++Builder или самоучитель по C++ и статью про таймеры. Любого учебника по C++Builder будет достаточно, чтобы написать такую программку. Сможете или нет - зависит исключительно от вас.
29.04.2010 в 09:48

У меня иногда встает вопрос. Почему новички хотят писать на C++? :)
30.04.2010 в 13:25

Вообщем то, нужно два таймера.
Первый будет ориентирован исключительно на организацию перерывов в работе. Я вижу это так:
1. Запускается автоматически по причине работы мыши или нажатия клавиш;
2. По прошествии 45 минут выводит сообщение, типа "Не пора ли отдохнуть".
3. В случае неактивности работы мыши или клавиатуры на прятяжении 10 минут таймер сбрасывается в ноль.
4. Запуск, опять же, работа мыши или клавиатуры.
5. Фунция подсчёта общего времени "активной" работы.

Второй таймер (органайзер) ориентирован на ограничение времени решения одной задачи.
1. Выставляем время.
2. Запускаем.
3. Автоторможение времени в случае отсутствия активности.
4. Функция паузы.
5. Открытие изображение или проигрывание звукового файла по окончанию отсчёта.
6. Возможность запуска нескольких отсчётов.
7. Падение в трей, доставание из трея горячими клавишами.