|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Инициализация переменных
Ребят у меня сегодня вообще ламерский вопрос.
Пишу счетчик времени работы в программе. Написал вот такой код Код:
procedure TForm1.Timer1Timer(Sender: TObject); var h,m,s:integer; hh,mm,ss:string; begin try inc(s); if s=60 then begin inc(m); s:=0; end; if m=60 then begin inc(h); m:=0; end; if s<10 then ss:='0'+inttostr(s) else ss:=inttostr(s); if m<10 then mm:='0'+inttostr(m) else mm:=inttostr(m); if h<10 then hh:='0'+inttostr(h) else hh:=inttostr(h); Label1.Caption := hh+':'+mm+':'+ss//DateTimetoStr(Now); except on E:Exception do begin Timer1.Enabled := False; ShowMessage(E.Message); end; end; end; Изначально почему то берутся какие то большие числа. Как это делается? |
#2
|
||||
|
||||
На старте программы. В OnCreate формы.
Если делать немного проще, можно в таймере считать секунды, а потом переводить в минуты, часы. Код:
h:=t div 3600; m:=(t mod 3600) div 60; s:=(t mod 3600) mod 60; |
#3
|
|||
|
|||
Спасибо.
А что в t? |
#4
|
|||
|
|||
Как - нибудь так
Код:
TForm1=Class(TForm) .... private T :Integer; ... implementation procedure TForm1.Button1Click(Sender:TObject) begin T := StrToInt(Edit1.Text); Timer1.Enabled:=True; end; procedure TForm1.Timer1Timer(Sender:TObject); var varh,m,s:integer; begin Dec(T); h:=t div 3600; m:=(t mod 3600) div 60; s:=(t mod 3600) mod 60; Label1.Caption := Format('%.2d:%.2d:%.2d',[h,m,s]); if (T<=0) then begin Timer1.Enabled:=False; // тут вставить код, который делает что-нибудь полезное end; end; |