![]() |
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! |
Re: Uptime der eigenen Anwendung in Minuten
Was ist denn daran unelegant?
Alternativ kannst du mit GetTickCount arbeiten. |
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; |
Re: Uptime der eigenen Anwendung in Minuten
was soll denn die Zeile
Delphi-Quellcode:
bewerkstelligen??
Format('%.0n', [f]);
ich würd des ein bisschen anders regeln:
Delphi-Quellcode:
rollstuhlfahrer
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; |
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; |
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; |
Re: Uptime der eigenen Anwendung in Minuten
Zitat:
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. |
Re: Uptime der eigenen Anwendung in Minuten
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz