Avatar billede lytzen Nybegynder
26. oktober 2000 - 21:41 Der er 5 kommentarer og
1 løsning

vise uptime på computeren

Jeg har brug for en funktion der kan returnere hvor langt tid en computer har været online. I programmet mIRC fx. kan man få oppetiden at vide ved at fyre en kommando afsted. Det den gør må delhi da også kunne. Nogen der kan hjælpe mig ?
Avatar billede dj Nybegynder
26. oktober 2000 - 22:57 #1
Oppetiden i mIRC er ikke hvor lang tid du har været connected til Internettet, men derimod hvor lang tid du har været connected til IRC Serveren.

Det burde ikke være så svært >>

Unit unit1;

Tform1 = class(Tform)
  procedure Create(sender: Tobject);
  procedure Button1click(sender: Tobject);
private
public
  //tilføj følgende til din unit
  Onlinestart, fday, fhour,fmin,fsec,Ftotal: integer;
  Function online:string;
  Function Duration(ms: integer):string;
end;

var
  form1:  Tform1;

const
cDay = 1000 * 60 * 60 * 24;
cHour = 1000 * 60 * 60;
cMin = 1000 * 60;
cSec = 1000;

implementation

function Tform1.Duration(ms: integer):string;
var
  temp: string;
begin
  Fday:=0;
  Fhour:=0;
  Fmin:=0;
  Fsec:=0;
  FTotal:=0;
  temp:=\'\';
  FDay := ms div cDay;
  Ftotal:=ms mod cday;
  FHour := Ftotal div cHour;
  Ftotal:=Ftotal mod chour;
  FMin := Ftotal div cMin;
  Ftotal:=Ftotal mod cmin;
  FSec := Ftotal div cSec;
  if Fday <> 0 then
  temp := temp + inttostr(Fday)+\'days \';
  if Fhour <> 0 then
  temp := temp + inttostr(Fhour)+\'hours \';
  if Fmin <> 0 then
  temp := temp + inttostr(Fmin)+\'mins \';
  if Fmin <> 0 then
  temp := temp + inttostr(Fsec)+\'secs \';
  result:=temp;
end;

procedure Tform1.Create(sender: Tobject);
begin
  Onlinestart:=Gettickcount;
end;

Function Tform1.online:string;
  var
  temp: string;
begin
  temp:=Gettickcount - onlinestart;
  result:=duration(temp);
end;

procedure Tform1.Button1click(sender: Tobject);
begin
  Showmessage(\'Du har været online i: \'+online);
end;

-------------------------------
Der tages forbehold for mindre fejl da koden ikke er testet.
Men du skulle kunne indsætte det meste af det i dit project og så burde det virke.

(hvis du vil have den fulde onlinetid så skal du lave et serviceprogram der starter op sammen med windows og sætter OnlineStart variablen når den detekter en Internet forbindelse (kan klares med en RAS component eller ved at kigge lidt på hvordan RAS virker, der følger hjælp til dette med Delphi))

Hvis du vil se hvor lang tid Windows har været startet på maskinen (UPTIME) kan du gøre dette således >>

//Benyt ovenstående kode og tilføj en function der ser sådan ud:

Function Tform1.Uptime:string;
begin
  result:=duration(gettickcount);
end;

procedure Tform1.Button2click(sender: Tobject);
begin
  Showmessage(\'Serveren har kørt i: \'+uptime);
end;


------------------------------
Håber dette hjalp lidt :)

Mvh. _DJ_ / #Delphi / Undernet
Avatar billede lytzen Nybegynder
27. oktober 2000 - 00:02 #2
Tak, du besvarede mit spørgsmål med det sidste svar du gav. Jeg mente nemlig oppetid med generelt, altså ikke kun online, men også tændt.
Forresten så kan altså godt mIRC fortælle tiden fra man har tændt computeren til \"nu\": /say [Win $+ $os system uptime: $duration($calc($ticks / 1000)) $+ ]
Avatar billede dj Nybegynder
27. oktober 2000 - 07:22 #3
yep, men jeg troede du mente fra man var connected til Internettet og til \"nu\" :)

\"Jeg har brug for en funktion der kan returnere hvor langt tid en computer har været online\"

og det kan mIRC nemlig ikke :)

Mvh. _DJ_
Avatar billede borrisholt Novice
27. oktober 2000 - 08:24 #4
dj >
Citat fra MSDN :

\"The GetTickCount function retrieves the number of milliseconds that have elapsed since the system was started. It is limited to the resolution of the system timer. \"

Hvilket vil sige at i GetTickCount() ligger tiden siden sidste boot af dit OS. I øvrigt er der der problem med GetTickCount() at den lageres i en DWORD og derfor hurtigt løbet over ...

En ander indgangs vinkel ville være at spørge CPU\'en efter hvornår der blev sat power på den .... Ikke hvornår maskinen sidst var bootet ..

Jens B
Avatar billede dj Nybegynder
27. oktober 2000 - 22:39 #5
borrisholt >> Du har ret, men der er jo måder at komme uden om det på, desuden spurgte han med mIRC som eksempel der selv anvender GetTickCount() til at vise Uptime og Onlinetime.

Desuden er den heller ikke så avanceret at arbejde med som din CPU forespørgsel, men vis du ligger inde med koden vil jeg da gerne se den, det kan jo være jeg kunne få brug for den i andre sammenhænge :)

Best Regards
_DJ_ / #Delphi / Undernet
Avatar billede lrj Nybegynder
29. oktober 2000 - 17:00 #6
Borrisholt > hmm, hvis du er villig til at uddybe hvordan man kan arbejde udenom gettickcount\'s overløbsproblem vil jeg da gerne oprette et spørgsmål dedikeret til det :)

Laver noget server-software som gerne skulle måle tiden præcist og over lang tid..
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

IT Forum Gruppen

Senior Sales Manager hos ITF

Carl Ras A/S

Digital Tech Lead

Capgemini Danmark A/S

Head of Digital Trust & Security

Politiets Efterretningstjeneste

Data engineer til PET