|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Таймер с обратным отсчетом - проблема в работе!
Господа программисты, помогите, плиз!
Ситуация такая: пишу программу для спортивных соревнований, соответственно, есть табло, на котором идет обратный отсчет времени (начальное значение таймера задается пользователем - 05:00, 04:00, 03:00, 02:00). Для таймера написала процедуру: Код:
procedure TForm1.Timer1Timer(Sender: TObject); var H, M, S: Integer; begin if i>0 then i:=i-1; H := I div 360; // часы M := (I - H) div 60; // минуты S := (I - H*360 - M*60); // секунды if s<10 then Label1.Caption:=IntToStr(M)+' : 0'+IntToStr(S) else Label1.Caption:=IntToStr(M)+' : '+IntToStr(S); if i=0 then begin Timer1.Enabled:=false; sndPlaySound('timer.wav', SND_ASYNC); end; end; Код:
procedure TForm1.Label1Click(Sender: TObject); begin if timer1.Enabled=false then begin timer1.Enabled:=true; Label1.Font.Color:=clGreen; end else begin timer1.Enabled:=false; Label1.Font.Color:=clRed; end; end; после того, как таймер остановился, передаем его значение в программу. И вот проблема в следующем: если таймер остановлен, например, на значении 04:36, то программа работает корректно. При значении от 03:50 до 03:59 программа вылетает по ошибке. от 03:49 и меньше - опять все хорошо. Есть еще несколько интервалов, на которых выдается системная ошибка. При других значениях таймера при прочих равных условиях (тестирую на одних и тех же данных) программа работает корректно. Может быть, кто-нибудь с подобным сталкивался - где искать ошибку? у меня уже мозги дыбом стоят, если честно Последний раз редактировалось Admin, 09.08.2012 в 21:32. |
#2
|
||||
|
||||
Используй тип TTime. И просто вычитай его.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 09.08.2012 в 10:05. |
#3
|
||||
|
||||
Цитата:
А какая хоть ошибка то? |
#4
|
|||
|
|||
Цитата:
|
#5
|
|||
|
|||
Цитата:
ой, а можно подробнее - где TTime использовать? |
#6
|
||||
|
||||
ну устанавливаешь ему время 00:01:55 ну и вычитаешь.
описание типа и как с ним работать - см. справку дельфи. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#7
|
|||
|
|||
Цитата:
ага, спасибо! попробую |
#8
|
||||
|
||||
Вывод в лайбу TimeToStr()
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#9
|
||||
|
||||
// declare
FTime: TTime; // initialization 1 min 5 sec FTime:=StrToTime('00:01:05'); // decrement 1 sec FTime:=IncSecond(FTime, -1); // out Label1.Caption:=TimeToStr(FTime); Пишу программы за еду. __________________ |