![]() |
|
|
Регистрация | << Правила форума >> | 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. |