Entwickler-Ecke

Sonstiges (Delphi) - Sekunden aus TTime?


Pyr0cracker - Sa 19.04.03 22:28
Titel: Sekunden aus TTime?
hi, wie kann ich die Sekunden aus TTime rausfinden?
ich will ein prog schreiben was jede sekunde eine variable hochzählt.
geht nich mit timer, da er nicht genau ist und wenn das system hängt hält er auch an.

danke schonmal,


kuhlthomas - Sa 19.04.03 22:36

versuch es doch mal mit GetTickCount mit dieser function erhältst du einen integer wert der dir angibt wieviele sekunden der pc schon läuft
also: GetTickCount(integer variable) und dann durch einen timer der auf 10 ms gestellt ist abfragen wann GetTickCount um 1000 gestiegen ist. das ist zwar auch nicht 100%ig genau hält die abweichungen aber zumindest in annehmbaren grenzen


wulfskin - So 20.04.03 01:55

Hallo Pyr0crack!

Für deine Zwecke sind wirklich GetTickCount (Genauigkeit 1/1000) oder QueryPerformanceCounter (Genauigkeit 1/1000000, bin mir aber net sicher) die besseren Lösungen.
Trotzdem, so bekommst du die Sekunde heraus:

Quelltext
1:
2:
3:
4:
5:
var
  Secs: Extended;
begin
  Secs := Now * (24 * 60 * 60);  //da 1 Tag = 24 * 60 * 60 Sekunden
end;
Gruß wulfskin!


AndyB - So 20.04.03 08:56

Es gibt auch die Konstante SecPerDay die man statt (24*60*60) einsetzen kann.


Pyr0cracker - So 20.04.03 11:52

Zitat:

var
Secs: Extended;
begin
Secs := Now * (24 * 60 * 60); //da 1 Tag = 24 * 60 * 60 Sekunden
end;
hmm, was kommt denn da heraus, 3228550583,3228550584, etc.

Aber noch mal zu GetTickCount und QueryPerformanceCounter, ich wollte die Sekunden aus der Uhrzeit auslesen, weil wenn mein Computer mal wieder einige Zeit überlastet ist, wird auch der Zähler angehalten, bzw. verlangsamt. Und der Zähler muss auch nach mehreren Stunden noch Syncron zur Uhrzeit laufen, da gibts aber immer kleine Abweichungen.

Nur zur Info, ich brauche das für einen Internetkosten-Zähler.

gruß,


Christian S. - So 20.04.03 12:07

Hilft Dir die Funktion SecondOf? Ist in der Unit DateUtils.

MfG,
Peter


dude - So 20.04.03 12:08

dann musst du anfangs die zeit nehmen

Quelltext
1:
2:
3:
4:
var a : TTime;
begin
  a := Time;
end;

und dann einen Timer einbauen, der nach z.B. Intervall 1000 die Zeit abzieht

Quelltext
1:
2:
3:
4:
5:
var b,c : TTime;
begin
b := Time;
c := b-a;
end;


ich weiss nur auch nicht, wie man nun aus TTime die Sekunden herausholt. Villeicht gibt es ja auch eine Variablen Art mit Sekunden, villeicht TSec oder sowas.