Delphi FAQ

Jak sprawdzić ile czasu upłynęło od startu systemu

Jensztejn

W celu sprawdzenia ile minut upłynęło od uruchomienia systemu możemy skorzystać z dwóch funkcji zadeklarowanych w modułach Windows lub MMSystem.

W pierwszym wypadku kod będzie wyglądał następująco:

program Foo;
 
{$APPTYPE CONSOLE}
 
uses Windows;
 
var
  SysTime : Cardinal;
begin
  SysTime := GetTickCount div 60000;
  Writeln('System pracuje przez: ', SysTime, ' min.');
  Readln;
end.

Drugie rozwiązanie polega na wykorzystaniu funkcji TimeGetTime:

program Foo;
 
{$APPTYPE CONSOLE}
 
uses MMSystem;
 
var
  SysTime : Cardinal;
begin
  SysTime := TimeGetTime div 60000;
  Writeln('System pracuje przez: ', SysTime, ' min.');
  Readln;
end.
FAQ

5 komentarzy

to przykład kodu który poda nam dokladnie czas działania systemu ładnie ułożony na godziny, minuty i sekundy, kod wrzucamy do timera:

zmienne zadeklarować globalnie.

var
godz,min,sec,min1,sec1 : Cardinal;
czas,data,godz1:string;

begin
godz :=GetTickCount() div 3600000;
min :=GetTickCount() div 60000;
sec :=GetTickCount() div 1000;
sec1:= sec - min60;
min1:= min - godz
60;
if (sec>1) then
begin
czas := IntToStr(sec1)+ 's';
end;
if (sec>=60) then
begin
czas := IntToStr(min1)+ 'm ' + IntToStr(sec1)+ 's';
end;
if (min>=60) then
begin
czas := IntToStr(godz) + 'h ' + IntToStr(min1)+ 'm ' + IntToStr(sec1)+ 's';
end;

zmienną "czas" teraz wystarczy wyświetlić w labelu lub innym elemęcie, jak się komu podoba

abc: wszystko fajno, tylko zamiast Integer użyj typu Cardinal

No, bo tak poza tym to to już bylo

A jak zrobic to bez dodatkowych modulow ?
A no tak:

var
czas : Cardinal; //a tu byl integer gdyz skopjowalem z powyzszego :]
begin
czas :=GetTickCount() div 60000;
Caption:='System pracuje przez: '+IntToStr(czas)+' min.';
end;