Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Die Zeit stoppen ohne Gettickcount (https://www.delphipraxis.net/41595-die-zeit-stoppen-ohne-gettickcount.html)

Khabarakh 5. Mär 2005 19:18

Re: Die Zeit stoppen ohne Gettickcount
 
Dynamische Arrays beginnen immer mit dem Index 0! Da dein Array laenge lang ist, knallt es natürlich am Ende von
Delphi-Quellcode:
for i:=1 to laenge do
        begin
        a[i]:=strtoint(form1.memo1.lines[i-1]);
        end;
(Btw: geniale Einrückung :mrgreen: ).
Also muss es
Delphi-Quellcode:
  for i:=1 to laenge do
    begin
    a[i-1]:=strtoint(form1.memo1.lines[i-1]);
    end;
oder gleich
Delphi-Quellcode:
  for i:=0 to laenge-1 do
    begin
    a[i]:=strtoint(form1.memo1.lines[i]);
    end;
heißen.

[edit]Ja, in der "bubble"-Prozedur genauso

Meflin 5. Mär 2005 19:22

Re: Die Zeit stoppen ohne Gettickcount
 
es geht auch ohne gettickcount: einfach nen timer nehmen, interval 1 (1 millisekunde) und dann im onTimer Event eine countvariable erhöhen :mrgreen: schwupps hast du eine tolle stoppuhr, ohne gettickcount ;)


Aenogym 5. Mär 2005 19:37

Re: Die Zeit stoppen ohne Gettickcount
 
Zitat:

Zitat von Meflin
es geht auch ohne gettickcount: einfach nen timer nehmen, interval 1 (1 millisekunde) und dann im onTimer Event eine countvariable erhöhen :mrgreen: schwupps hast du eine tolle stoppuhr, ohne gettickcount ;)

, die nicht unbedingt genau ist ;)

Aenogym

Meflin 5. Mär 2005 19:41

Re: Die Zeit stoppen ohne Gettickcount
 
Zitat:

Zitat von Aenogym
Zitat:

Zitat von Meflin
es geht auch ohne gettickcount: einfach nen timer nehmen, interval 1 (1 millisekunde) und dann im onTimer Event eine countvariable erhöhen :mrgreen: schwupps hast du eine tolle stoppuhr, ohne gettickcount ;)

, die nicht unbedingt genau ist ;)

Aenogym

naja, also immerhin auf die millisekunde genau. was willst du mehr :mrgreen:


Aenogym 5. Mär 2005 19:44

Re: Die Zeit stoppen ohne Gettickcount
 
Zitat:

Zitat von Meflin
Zitat:

Zitat von Aenogym
Zitat:

Zitat von Meflin
es geht auch ohne gettickcount: einfach nen timer nehmen, interval 1 (1 millisekunde) und dann im onTimer Event eine countvariable erhöhen :mrgreen: schwupps hast du eine tolle stoppuhr, ohne gettickcount ;)

, die nicht unbedingt genau ist ;)

Aenogym

naja, also immerhin auf die millisekunde genau. was willst du mehr :mrgreen:

[ot]einen neuen eintrag in deinem blog :D[/ot]

Robert_G 5. Mär 2005 19:55

Re: Die Zeit stoppen ohne Gettickcount
 
Ein Timer macht wohl ab 30-50ms Sinn. Da Timer die geringste Priorität überhaupt haben kannst du auch das auf einem ausgelasteten System knicken.

GetTickCount dürfte wohl die einfachste Möglichkeit sein relativ ( :!: ) genau die Zeit zu messen. ;)
Zitat:

Zitat von Aenogym
[ot]einen neuen eintrag in deinem blog :D[/ot]

Schleimer! :P

Khabarakh 5. Mär 2005 20:05

Re: Die Zeit stoppen ohne Gettickcount
 
Zitat:

Zitat von Aenogym
Zitat:

Zitat von Meflin
es geht auch ohne gettickcount: einfach nen timer nehmen, interval 1 (1 millisekunde) und dann im onTimer Event eine countvariable erhöhen :mrgreen: schwupps hast du eine tolle stoppuhr, ohne gettickcount ;)

, die nicht unbedingt genau ist ;)

Aenogym

Besonders weil man in der Praxis nie einen Intervall von einer Millisekunde erreichen wird. Bei minimalem Code schaffe ich auf meinem PC nur 15,6 Millisekunden.

[edit]Viel zu spät :roll: .

malo 5. Mär 2005 20:06

Re: Die Zeit stoppen ohne Gettickcount
 
Zitat:

Zitat von Meflin
Zitat:

Zitat von Aenogym
Zitat:

Zitat von Meflin
es geht auch ohne gettickcount: einfach nen timer nehmen, interval 1 (1 millisekunde) und dann im onTimer Event eine countvariable erhöhen :mrgreen: schwupps hast du eine tolle stoppuhr, ohne gettickcount ;)

, die nicht unbedingt genau ist ;)

Aenogym

naja, also immerhin auf die millisekunde genau. was willst du mehr :mrgreen:

Nein, mit min. 1 milisekunde abweichung, da der Timer dann erst "nach einer millisekunde" anfängt zu zählen. Außerdem werden etwas mehr systemressourcen benötigt, da der Timer ja eingeschaltet werden muss und dann auch noch selbst arbeiten. GetTickCount ist eine Windows-Funktion und läuft grundsätzlich IMMER, weshalb diese Funktion KEINE zusätzlichen Ressourcen verbraucht.

Wobei das jedoch schon wieder haarspaleterei ist. Wenn man genug durchläufe macht, sodass Abweichungen von 10-20ms zu anderen Algos entstehen, sind die 1-2ms Abweichung eigentlich egal ;)

Matze 5. Mär 2005 20:10

Re: Die Zeit stoppen ohne Gettickcount
 
Zu TTimer:
geringstes funktionierendes Intervall

unter Win XP: 10ms
unter Win 9x: 50ms

Also 1ms ist purer Schwachsinn, da du das nie erreichen wirst.

Nikolas 5. Mär 2005 20:12

Re: Die Zeit stoppen ohne Gettickcount
 
Zitat:

Wobei das jedoch schon wieder haarspaleterei ist. Wenn man genug durchläufe macht, sodass Abweichungen von 10-20ms zu anderen Algos entstehen, sind die 1-2ms Abweichung eigentlich egal Wink
Das ist falsch. Der Timer wird (computerabhängig) nur etwa alle 20ms aktualisiert. Wenn du also Laufzeitunterschiede in diesem Bereich hast, wirst du die nicht von den Rundungsfehlern des Timers unterscheiden können. Sinnvoll kann man den Timer mit dieser Methode erst am Unterschieden von etwa einer Sekunde, da dann die Fehler vernachlässigbar klein werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr.
Seite 2 von 4     12 34      

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