Autor Beitrag
PheliX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 59



BeitragVerfasst: Do 22.01.04 18:37 
Hallo!

Ich will einen Online Counter proggen... muss die online Zeit stoppen... ist die zeit, die ich vom TTimer bekommen genau genug? mit nem intervall von 1000?

Danke
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: Do 22.01.04 18:41 
Der TTimer beruht meiner Meinung nach auf der WM_TIMER Windows Message und ist nur für ungenaue Messungen geeignet. Ich würde mal sagen, wenns auf 10 ms genau sein sollte wirds reichen ...

ABER:

Es kommt drauf an, wie du mißt. Wenn du nur die Zeit mißt, wo Pakete unterwegs sind, dann ists sicher zu ungenau, weil sich bei kurzen Zeitspannen da einiges an Ungenauigkeiten aufsummiert.

Weiters ist die WM_TIMER eine Message - d.h. wenn du eine große Rechnerauslast hast (100%) kanns passieren, daß Messages geschluckt werden - weil erst wieder eine Message gesendet wird, wenn keine mehr in der Queue ist.

Fazit:

Ich würde für Zeitmessungen würde ich prinzipiell eine API-Funktion verwenden oder eine spezielle Timer-Compo (ich persönlich bevorzuge die API-Sache, weil ich da weiß, was ich tue :wink: ).

Genauer kann ich nicht eingehen, weil ich ja auch nicht genau weiß wie oder was genau du messen willst ...

_________________
Euer Mäxchen
Wer früher stirbt, ist länger tot.
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Do 22.01.04 22:30 
die Api-Funktionen lauten
ausblenden Delphi-Quelltext
1:
gettickcount					

und
ausblenden Delphi-Quelltext
1:
 QueryPerformanceCounter					
BungeeBug
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: Fr 23.01.04 06:47 
Hi,


soweit ich weiß zeigt Windows die Zeit doch an, was bedeutet das es eine solche Funktion schon gibt die man einfach nur auslesen müsste?! Ich hab nur grad das PSDK nicht zur Hand ... wenn jmd. mal nachgucken könnte :)
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Fr 23.01.04 09:24 
MaxiTB hat folgendes geschrieben:
Weiters ist die WM_TIMER eine Message - d.h. wenn du eine große Rechnerauslast hast (100%) kanns passieren, daß Messages geschluckt werden - weil erst wieder eine Message gesendet wird, wenn keine mehr in der Queue ist.

Außerdem ist die WM_TIMER-Message die Message mit der niedrigsten Priorität! D.h. es werden zuerst alle anderen anstehenden Messages abgearbeitet, bevor die WM_TIMER-Message drankommt..! Wenn also noch jede Menge andrere Messages in der Message-Queue sind kann es sich durchaus etwas verzögern, bis die WM_TIMER-Message verarbeitet und das OnTimer-Event ausgelöst wird...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
PheliX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 59



BeitragVerfasst: Sa 24.01.04 10:58 
Danke schon mal, für die vielen Antworten.... ich werd mich mal durcharbeiten... :wink:
Seniman
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 42


D6 Pers
BeitragVerfasst: Sa 24.01.04 11:12 
Hallo PheliX,

ich hab das in der Schule so gelernt, dass man die Funktion "time" benutzt.
Diese Funktion gibt zu jedem Zeitpunkt die aktuelle Uhrzeit (in Tagen) an.
Wenn du jetzt die Dauer von irgendetwas messen willst, dann speichere den Wert von Time vorher in einer Variable.
ausblenden Delphi-Quelltext
1:
Startzeit:=time;					

Hinterher lässt sich die vergangene Zeit so ausrechnen:
ausblenden Delphi-Quelltext
1:
VergangeneZeit:=(time-Startzeit)*86400					

wobei 86400 die Anzahl der Sekunden pro Tag ist. Das Ergebniss gibt also die vergangege Zeit in Sekunden aus. Soweit ich weiß sogar ziemlich genau.

Grüße
Seniman
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Sa 24.01.04 19:34 
naja, wenn Sekunden genau sein sollen, dann weiß ich auch nicht mehr :mrgreen:
wie schon vorher gesagt soltle man sich die MEthode "gettickcount" anschauen, die angibt wieviele Millisekunden Windows schon läuft und genau genug ist um Online-Spiele zu realisieren...
Seniman
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 42


D6 Pers
BeitragVerfasst: So 25.01.04 18:52 
@Fiji-Fighter:
Die Sekunden sind vondaher genau, als dass sie weiterhin als Float gespeichert werden, d.h. mit einem Haufen Nachkommastellen. Wenn du es in Millisekunden haben willst, dann multiplizier es halt mit 1000.
Aber wenn ihr das so Profitricks habt, dann will ich auch natürlich nicht widersprechen.

Grüße
Seniman
Seniman
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 42


D6 Pers
BeitragVerfasst: So 25.01.04 18:55 
Man könnte auch mit 1000000 Multiplizieren, dann hätte man Mikrosekunden.

Oder gar mit 1000000000 dann wären wir bei Nanosekunden.

Ich hab das bisher nur noch nie so genau gebraucht.

Grüße
Seniman