Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Uptime Funktion > 49 Tage! (https://www.delphipraxis.net/45690-uptime-funktion-49-tage.html)

Kidix 10. Mai 2005 21:00


Uptime Funktion > 49 Tage!
 
Hi,


kennt jemand ne wirklich funktionierende Funktion zur Uptimeberechnung > 49 Tage?

Gruß

Kidix

Dax 10. Mai 2005 21:07

Re: Uptime Funktion > 49 Tage!
 
Link
Lernt doch mal suchen, dafür gibts solche Funktionen...

Kidix 10. Mai 2005 21:22

Re: Uptime Funktion > 49 Tage!
 
Ganz ehrlich, hiernach sucht doch keiner!

Zitat:

Beschränkung von GetTickCount umgehen
Kidix

DGL-luke 10. Mai 2005 21:33

Re: Uptime Funktion > 49 Tage!
 
wonach hast du denn zuerst gsucht? :stupid:

und hast du da beim link was gefunden?

Kidix 10. Mai 2005 21:38

Re: Uptime Funktion > 49 Tage!
 
Nicht wirklich, die eine Function ist nur für Nt, die andere muss mindestens alle 49 Tage einmal aufgerufen werden!


Kidix

Dax 10. Mai 2005 21:41

Re: Uptime Funktion > 49 Tage!
 
:roll: Kuck mal ganz ans Ende des Threads. Da ist eine Funktion, die nicht nur auf NT läuft und die nicht alle 49 Tage aufgerufen werden muss. Und jetzt sag nicht, der Rechner kann kein QueryPerformanceCounter, dann läuft er nie lang genug, um die 49,7-Tage-Grenze zu sprengen. Dafür wär er zu alt und das ausgeführte Windows wohl entsprechend instabil.

s.h.a.r.k 10. Mai 2005 21:53

Re: Uptime Funktion > 49 Tage!
 
Hey! warum hat M$ eigentlich diese "Funktion", Fehler, Bug oder nennt es wie ihr wollt mir den 49 Tagen eingebaut, bzw duch was wird das bedingt?!

NicoDE 11. Mai 2005 07:57

Re: Uptime Funktion > 49 Tage!
 
Zitat:

Zitat von s.h.a.r.k
Hey! warum hat M$ eigentlich diese "Funktion", Fehler, Bug oder nennt es wie ihr wollt mir den 49 Tagen eingebaut, bzw duch was wird das bedingt?!

In 32-Bit passen nicht mehr Informationen als 32-Bit. Und da die Auflösung des Timers bei GetTickCount eine Millisekunde ist, reichen die 32 Bit zur Darstellung von 49.7 Tagen.

ps: die Unit die ich dort geschrieben habe ist für WinNT, Win9x und Linux (Lesen statt Überfliegen hätte geholfen :roll: ).

Zitat:

Zitat von Dax
Und jetzt sag nicht, der Rechner kann kein QueryPerformanceCounter, dann läuft er nie lang genug, um die 49,7-Tage-Grenze zu sprengen. Dafür wär er zu alt und das ausgeführte Windows wohl entsprechend instabil.

Ich bin da anderer Ansicht :)
Aber meine 9x-Version liesse sich mit deinem Code deutlich verbessern (natürlich mit Abfrage, ob QueryPerformanceCounter auch unterstützt wird ;)).

Kidix 11. Mai 2005 12:28

Re: Uptime Funktion > 49 Tage!
 
Also diese Function macht nicht wirklich das was sie soll.

Zähler bleibt permanent auf 22 Sekunden stehen!

Delphi-Quellcode:
var
  QPF: Int64 = 0;

function GetTickCountEx: TUpTime;
begin
  if QPF = 0 then
    QueryPerformanceFrequency(QPF);
  QueryPerformanceCounter(Ticks);
  if (QPF = 0) or (Ticks = 0) then
  begin
    Result.Milliseconds := Word(-1);
    Exit;
  end;
  Ticks := Ticks div QPF;

  with Result do
  begin
    MilliSeconds := Ticks mod 1000;
    Seconds := (Ticks div 1000) mod 60;
    Minutes := (Ticks div 60000) mod 60;
    Hours := (Ticks div 3600000) mod 24;
    Days := ((Ticks div 3600000) div 24) mod 30;
    Months := ((Ticks div 3600000) div 24) div 30;
    Years := ((Ticks div 3600000) div 24) div 365;
  end;
end;
Kidix

P.S. Ok, die einheiten sind Falsch, auf Milliseconds kann im obigen Code nicht zugegriffen werden, da er die sekundenzahl auswirft!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:39 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