Avatar billede cool-wil Nybegynder
05. april 2002 - 13:48 Der er 15 kommentarer og
2 løsninger

uptime i delphi(win98)

Hvordan viser jeg uptime for en win98 maskine via delphi?
f.eks. vi en alert eller andet...

wil/

uptime, skal være fra når windows starter, til man slukker...

hvordan kan man gemme dette resultat lige før den booter? så man kan se det næste gang brugeren logger ind?

nogle som kan hjælpe her?

wil/
Avatar billede borrisholt Novice
05. april 2002 - 13:49 #1
brug GetTickCount()

Jens B
Avatar billede cool-wil Nybegynder
05. april 2002 - 13:52 #2
kunne du evt. komme lidt tættere ind på hvordan osv? :-)
Avatar billede borrisholt Novice
05. april 2002 - 13:59 #3
jeg har ikke rigtig tid ..

Du kan få den her også :

Function FormatSeconds(TotalSeconds : Double; WholeSecondsOnly : Boolean = True; DisplayAll : Boolean = False): String;
Var
Centuries,Years,Months,Minutes,Hours,Days,Weeks : Word;
Secs : Double;
TmpStr: Array[1..8] of String;
SecondsPerCentury: Int64;
FS : String;
begin
  (** Suppress the decimal part if Whole Seconds Only is desired **)
  If WholeSecondsOnly then FS:='%.0f' else FS:='%.2f';

  (** Split the calculation to avoid an overflow **)
  SecondsPerCentury:= 36500*24;
  SecondsPerCentury:= SecondsPerCentury * 3600;
  SecondsPerCentury:= SecondsPerCentury + ( {4 Leap years per century} 4 * 24 * 3600);
  (** Get centuries **)
  Centuries:=Trunc(TotalSeconds / SecondsPerCentury);
  TotalSeconds:=TotalSeconds-(Centuries * SecondsPerCentury);

  (** Get years **)
  Years:=Trunc(TotalSeconds / (SecondsPerCentury / 100));
  TotalSeconds:=TotalSeconds-(Years * (SecondsPerCentury / 100));

  (** Get months **)
  Months:=Trunc(TotalSeconds / (SecondsPerCentury / 1200));
  TotalSeconds:=TotalSeconds-(Months * (SecondsPerCentury / 1200));

  (** Get weeks **)
  Weeks:=Trunc(TotalSeconds / (24 * 3600 * 7));
  TotalSeconds:=TotalSeconds-(Weeks * (24 * 3600 * 7));

  (** Get days **)
  Days:=Trunc(TotalSeconds / (24 * 3600));
  TotalSeconds:=TotalSeconds-(Days * (24 * 3600));

  (** Get Hours **)
  Hours:=Trunc(TotalSeconds / 3600);
  TotalSeconds:=TotalSeconds-(Hours * 3600);

  (** Get minutes **)
  Minutes:=Trunc(TotalSeconds / 60);
  TotalSeconds:=TotalSeconds-(Minutes * 60);

  (** Get seconds **)
  If WholeSecondsOnly then
    Secs:=Trunc(TotalSeconds)
  else
    Secs:=TotalSeconds;

  (** Deal with single values **)
  if Centuries=  1 then TmpStr[1] :=' Century, ' else TmpStr[1]:=' Centuries, ';
  if Years=      1 then TmpStr[2] :=' Year, '    else TmpStr[2]:=' Years, ';
  if Months=    1 then TmpStr[3] :=' Month, '  else TmpStr[3]:=' Months, ';
  if Weeks=      1 then TmpStr[4] :=' Week, '    else TmpStr[4]:=' Weeks, ';
  if Days=      1 then TmpStr[5] :=' Day, '    else TmpStr[5]:=' Days, ';
  if Hours=      1 then TmpStr[6] :=' Hour, '    else TmpStr[6]:=' Hours, ';
  if Minutes=    1 then TmpStr[7] :=' Minute, '  else TmpStr[7]:=' Minutes, ';
  if Secs=      1 then TmpStr[8] :=' Second.'  else TmpStr[8]:=' Seconds.';

  If DisplayAll then
  Result:= Format('%.0d%s%.0d%s%.0d%s%.0d%s%.0d%s%.0d%s%.0d%s' + FS + '%s', [Centuries,TmpStr[1],Years,TmpStr[2],Months,TmpStr[3],Weeks,TmpStr[4],Days,TmpStr[5],Hours,TmpStr[6],Minutes,TmpStr[7],Secs,TmpStr[8]])
  else
    begin
      if Centuries>=1 then
      begin
        Result:= Format('%.0d%s%.0d%s%.0d%s%.0d%s%.0d%s%.0d%s%.0d%s' + FS + '%s', [Centuries,TmpStr[1],Years,TmpStr[2],Months,TmpStr[3],Weeks,TmpStr[4],Days,TmpStr[5],Hours,TmpStr[6],Minutes,TmpStr[7],Secs,TmpStr[8]]);
        Exit;
      end;

      if Years>=1 then
      begin
        Result:= Format('%.0d%s%.0d%s%.0d%s%.0d%s%.0d%s%.0d%s' + FS + '%s',[Years,TmpStr[2],Months,TmpStr[3],Weeks,TmpStr[4],Days,TmpStr[5],Hours,TmpStr[6],Minutes,TmpStr[7],Secs,TmpStr[8]]);
        Exit;
      end;

      if Months>=1 then
      begin
        Result:= Format('%.0d%s%.0d%s%.0d%s%.0d%s%.0d%s' + FS + '%s',[Months,TmpStr[3],Weeks,TmpStr[4],Days,TmpStr[5],Hours,TmpStr[6],Minutes,TmpStr[7],Secs,TmpStr[8]]);
        Exit;
      end;

      if Weeks>=1 then
      begin
        Result:= Format('%.0d%s%.0d%s%.0d%s%.0d%s' + FS + '%s', [Weeks,TmpStr[4],Days,TmpStr[5],Hours,TmpStr[6],Minutes,TmpStr[7],Secs,TmpStr[8]]);
        Exit;
      end;

      if Days>=1 then
      begin
        Result:= Format('%.0d%s%.0d%s%.0d%s' + FS + '%s', [Days,TmpStr[5],Hours,TmpStr[6],Minutes,TmpStr[7],Secs,TmpStr[8]]);
        Exit;
      end;

      if Hours>=1 then
      begin
        Result:= Format('%.0d%s%.0d%s' + FS + '%s', [Hours,TmpStr[6],Minutes,TmpStr[7],Secs,TmpStr[8]]);
        Exit;
      end;

      if Minutes>=1 then
      begin
        Result:= Format('%.0d%s' + FS + '%s', [Minutes,TmpStr[7],Secs,TmpStr[8]]);
        exit;
      end;

      Result:= Format(FS + '%s', [Secs,TmpStr[8]]);
    end;
end;


Jens B
Avatar billede snowball Novice
05. april 2002 - 13:59 #4
Nedenstående funktion kan fortælle hvor længe Windows har være oppe:

function UpTime: string;
const
  ticksperday: integer = 1000 * 60 * 60 * 24;
  ticksperhour: integer = 1000 * 60 * 60;
  ticksperminute: integer = 1000 * 60;
  tickspersecond: integer = 1000;
var
  t: longword;
  d, h, m, s: integer;
begin
  t := GetTickCount;
  d := t div ticksperday;
  dec(t, d * ticksperday);
  h := t div ticksperhour;
  dec(t, h * ticksperhour);
  m := t div ticksperminute;
  dec(t, m * ticksperminute);
  s := t div tickspersecond;

  Result := 'Uptime: ' + IntToStr(d) + ' Days ' + IntToStr(h) + ' Hours ' + IntToStr(m) + ' Minutes ' + IntToStr(s) + ' Seconds';
end;


Snowball
Avatar billede cool-wil Nybegynder
05. april 2002 - 14:53 #5
borisholdt> din kode ser fuldstændig underlig ud, den skal jeg bare teste:-)

kigger også på din snow, kommer tilbage lidt senere, med nogle points:-)
Avatar billede cool-wil Nybegynder
05. april 2002 - 15:26 #6
tak for hjælen begge 2:-)

borisholdt, smid et svar:-)

wil/
Avatar billede borrisholt Novice
05. april 2002 - 15:27 #7
:-)
Avatar billede cool-wil Nybegynder
05. april 2002 - 16:37 #8
mange tak for hjælpen:-)

der kom www.asio.dk/setup.exe ud af jeres hjælp:-)

wil/
Avatar billede cool-wil Nybegynder
05. april 2002 - 16:37 #9
ikke det mest advanceret program, men det er ok:-)
Avatar billede snowball Novice
05. april 2002 - 18:53 #10
Lad os bare sige at der er plads til forbedringer :)

Men idéen er da udemærket :)

Snowball
Avatar billede cool-wil Nybegynder
05. april 2002 - 20:24 #11
hehe:-) kan du høre talen?
tryk på til cool way knappen :-)

jeg arbejder p.t på at gemme resultatet lige før man genstarter, men kan ikke helt finde ud af det...
Avatar billede snowball Novice
05. april 2002 - 20:25 #12
Jeg får en "Class not registered" når jeg trykker på knappen, men jeg har heller ikke installeret det der Microsoft noget ;)

Snowball
Avatar billede cool-wil Nybegynder
05. april 2002 - 20:26 #13
det er derfor:-)
troede faktisk den var standart i win, men nok ikke
Avatar billede borrisholt Novice
06. april 2002 - 18:00 #14
jeg har også været ved at pille lidt

http://borrisholt.com/Eksperten/boot.zip

Jens B
Avatar billede borrisholt Novice
06. april 2002 - 18:00 #15
Jeg laver den færdig MÅSKE !

Jens B
Avatar billede snowball Novice
06. april 2002 - 18:04 #16
Jens: Er det bare mig, eller kan man hverken minimere eller lukke din app. (altså på nær på den hårde måde) !? ;)

Snowball
Avatar billede borrisholt Novice
12. april 2002 - 15:58 #17
Jeg har opdateret min boot fætter ....

God fornøjelse ....

Jens B
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB