Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi Stopuhr (https://www.delphipraxis.net/49730-delphi-stopuhr.html)

Fredyy 15. Jul 2005 07:23


Delphi Stopuhr
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi,
ich habe heute schnell eine Stopuhr gemacht.
ich hoffe ihr könnt euch das mal angucken und
mir sagen ob die so "genau" ist oder ob die
völlig falsch läuft. danke schon mal.

bye Fredyy

Matze 15. Jul 2005 07:30

Re: Delphi Stopuhr
 
Bei mir (WinXP Home SP2) läuft sie eindeutig zu langsam.

Nachtrag: Timer mit Intervall 1, lustig, aber schwachsinnig. WIndows XP schafft max. 10 ms, Win9x 50 ms, daran liegt es, dass deine Stoppuhr zu langsam ist, stelle das Intervall auf 50 ms, überprüfe entsprechend und die Stoppuhr ist deutlich genauer. Oder schau dir mal das hier an.

s.h.a.r.k 15. Jul 2005 07:37

Re: Delphi Stopuhr
 
Hab ebenfalls XP mit SP1 und die Uhr ist ja verdammt langsam!!! Wie hast du Sie eigentlich programmiert?! Hoffe nicht mit einem Timer!

Matze 15. Jul 2005 07:38

Re: Delphi Stopuhr
 
Zitat:

Zitat von s.h.a.r.k
Hab ebenfalls XP mit SP1 und die Uhr ist ja verdammt langsam!!! Wie hast du Sie eigentlich programmiert?! Hoffe nicht mit einem Timer!

Siehe dir den Quelltext an und du wirst ereknnen, dass es sich um einen TTimer handelt. ;)

s.h.a.r.k 15. Jul 2005 07:47

Re: Delphi Stopuhr
 
Zitat:

Zitat von Matze
Zitat:

Zitat von s.h.a.r.k
Hab ebenfalls XP mit SP1 und die Uhr ist ja verdammt langsam!!! Wie hast du Sie eigentlich programmiert?! Hoffe nicht mit einem Timer!

Siehe dir den Quelltext an und du wirst ereknnen, dass es sich um einen TTimer handelt. ;)

Das konnte ich leider nicht nachschauen, da ich auf diesem Rechner leider kein Delphi hab! sorry

Matze 15. Jul 2005 07:52

Re: Delphi Stopuhr
 
Zitat:

Zitat von s.h.a.r.k
Das konnte ich leider nicht nachschauen, da ich auf diesem Rechner leider kein Delphi hab! sorry

Das würde auch mit Notepad gehen. ;) Aber Fredyy hat nun den Grund für seine ungenaue Stoppuhr und mit Luckies Code aus der Code-Library kann er diese wirklich sehr genau machen, da dieser auf dem CPU-Takt basiert. TTimer eignet sich dafür nicht.

malo 15. Jul 2005 08:04

Re: Delphi Stopuhr
 
Es würde auch ein DXTimer als Alternative zum TTimer reichen. Es gab schon einige Diskussionen darüber. Kurze Zusammenfassung:

Ein Timer (z.B. TTimer) ist ein Thread. Threads laufen immer parallel nebeneinander, statt nacheinander. Wenn man jetzt einen Thread erstellt, der eine geringere Priorität hat, wird er in größeren Abständen aufgerufen als ein Thread mit hoher Priorität (logisch). Und da liegt der Unterschied: Der TTimer hat eine zu niedrige Priorität, um auf 1ms zu laufen (jedenfalls auf aktuellen Systemen). Dafür verbrauchen aber auch schnellere Timer (z.B. DXTimer) mehr CPU-Auslastung ;)

Das sollte imho als Erklärung reichen (wenn ich irgendwo falsch liegen sollte, bitte melden). Das heißt: Es würde also eigentlich schon reichen, wenn du den Timer durch den DXTimer ersetzt (oder durch eine andere, beliebige Timer-Unit, von denen es mittlerweile einige gibt) ;)

FriFra 15. Jul 2005 08:16

Re: Delphi Stopuhr
 
Warum "merkst" Du Dir nicht einfach die Startzeit (Systemzeit beim Start der Stopuhr) und erechnest Dir onTimer die Differenz zur aktuellen Zeit? Bei einem entspr. kurzem Interval läuft die Uhr dann absolut genau (zumindest so genau wie Deine Systemuhr ;) ) und schnell, egal ob der Timer mal schneller oder mal langsamer läuft...

Fredyy 17. Jul 2005 11:04

Re: Delphi Stopuhr
 
wie kann ich die startzeit raus bekommen?

danke schon mal für eure antworten...

3_of_8 17. Jul 2005 11:09

Re: Delphi Stopuhr
 
Delphi-Quellcode:
start:=GetTickCount;
Also sowas in der Art:

Delphi-Quellcode:
interface
//...
var start: Cardinal=0;

//...

implementation

//...

procedure Button1Click(Sender: TObject);
begin
if start=0 then
begin
start:=GetTickCount;
Button1.caption:='Stopp';
label1.caption:='';
end
else
begin
Button1.Caption:='Start';
start:=0;
label1.caption:=inttostr(round((GetTickCount-start)/1000)))+' Sekunden verstrichen.';
end;
end;

//...

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:45 Uhr.
Seite 1 von 2  1 2      

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