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