Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Uptime der eigenen Anwendung in Minuten (https://www.delphipraxis.net/108182-uptime-der-eigenen-anwendung-minuten.html)

Ajin 8. Feb 2008 13:49


Uptime der eigenen Anwendung in Minuten
 
Hallo!

Ich möchte die uptime meiner Anwendung in ein Label packen, allerdings nur in vollen Minuten.
Ich könnte natürlich einen Integer mit 0 initialisieren und jede Sekunde durch 60 Teilen und ausgeben, dann hab ich jede volle Minute... aber da gibts bestimmt was eleganteres oder?

Grüsse!

Nuclear-Ping 8. Feb 2008 13:51

Re: Uptime der eigenen Anwendung in Minuten
 
Was ist denn daran unelegant?

Alternativ kannst du mit GetTickCount arbeiten.

Ajin 8. Feb 2008 14:41

Re: Uptime der eigenen Anwendung in Minuten
 
Okay ich habs dann mit dem Teilen des Integer Werts gelöst.

uptime ist ein integer = 0

Delphi-Quellcode:

procedure TForm1.Timer_dateTimer(Sender: TObject);
var m : string;
f:double;
begin
 inc(uptime);
 f:=uptime/60;
 Format('%.0n', [f]);
 m:=Format('%6.0f', [f]);
 label1.caption:=m;
end;

rollstuhlfahrer 8. Feb 2008 15:49

Re: Uptime der eigenen Anwendung in Minuten
 
was soll denn die Zeile
Delphi-Quellcode:
Format('%.0n', [f]);
bewerkstelligen??

ich würd des ein bisschen anders regeln:
Delphi-Quellcode:
procedure TForm1.Timer_dateTimer(Sender: TObject);
var Minute: integer;
begin
inc(uptime); // integer (sekunden)
Minuten := uptime div 60;
Label1.Caption := IntToStr(Minuten);
// Label1.Caption := 'UpTime: ' + IntToStr(Minuten) + ' min';
end;
rollstuhlfahrer

shmia 8. Feb 2008 16:15

Re: Uptime der eigenen Anwendung in Minuten
 
Wenn man eine Zeit messen möchte, sollte man nicht irgendeinen Zähler per Timer erhöhen, denn das kann grössere Abweichungen (bis zu 20%) geben.
Wenn Windows oder deine Anwendung voll ausgelastet sind, kommen die Timer-Ereignisse verzögert oder zeitweise gar nicht.

So wird's gemacht:
Delphi-Quellcode:
TForm1 = class(Tform)
private
  FStartup : TDateTime;
end;

procedure TForm1.FormCreate();
begin
  FStartup := Now; // wie merken uns die Startzeit
end;


function TimeDiffToStr(timediff: TDateTime): string;
var
   h,n,s,z: Word;
begin
   DecodeTime(timediff,h,n,s,z);
   if h > 0 then
      Result := Format('%d:%.2d:%.2d',[h,n,s])
   else
      Result := Format('%.2d:%.2d',[n,s]);
end;

// Timer-Event, dass jede Sekunde die Anzeige aktualisiert
procedure TForm1.TimerTimer();
var
  timediff : TDateTime;
begin
  timediff := now-FStartup;
  Label1.Caption := 'Uptime: '+TimeDiffToStr(timediff);
end;

halinchen 8. Feb 2008 16:21

Re: Uptime der eigenen Anwendung in Minuten
 
Geht es nicht leichter, indem man sich am Anfang des Programmes GetTickCount merkt und dann wenn man es braucht den alten Tick vom neuen subtrahiert und in Minuten umrechnet?

GetTickCount ist, glaube ich, in Millisekunden, also die Differenz / 1000 / 60.

Delphi-Quellcode:
procedure TForm1.FormCreate();
begin
  FStartTick = GetTickCount;
end;

function TForm1.GetTime : Cardinal;
begin
  result := (GetTickCount - FStartTick) / 1000 / 60;
end;

shmia 8. Feb 2008 16:29

Re: Uptime der eigenen Anwendung in Minuten
 
Zitat:

Zitat von halinchen
Geht es nicht leichter, indem man sich am Anfang des Programmes GetTickCount merkt

Viele Wege führen nach Rom. GetTickCount ist aber nicht für längere Zeiträume geeignet.
Nach 49.7 Tagen gibt es einen Überlauf und bei der Hälfte der Zeit wird der Wert negativ.
Also wenn die Anwendung auf einem Server gestartet wurde, der schon lange läuft, wird es Probleme geben.

bitsetter 8. Feb 2008 18:20

Re: Uptime der eigenen Anwendung in Minuten
 
Zitat:

Zitat von halinchen
Geht es nicht leichter, indem man sich am Anfang des Programmes GetTickCount merkt und dann wenn man es braucht den alten Tick vom neuen subtrahiert und in Minuten umrechnet?

Mit Hilfe der Funktion GetProcessTimes() kann man ansonsten auch noch an die Creationtime des eigenen Prozesses kommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz