/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Pause
Fra : Harald


Dato : 30-07-02 13:14

Hej

Jeg har brug for at kunne holde en pause på mindre en 1ms, hvordan gør man
det?

Mvh
HK




 
 
Harald (30-07-2002)
Kommentar
Fra : Harald


Dato : 30-07-02 13:37

"Harald" <swobu@kroning.dk> skrev i en meddelelse
news:3d46830c$0$1248$edfadb0f@dspool01.news.tele.dk...
> Hej
>
> Jeg har brug for at kunne holde en pause på mindre en 1ms, hvordan gør man
> det?

Glem det spørgsmål.

Det ser ud til at functionen Sleep ikke kan holde en pause i f.eks. 5 ms,
uanset hvilket tal jeg skriver mellem 1 og 10 så bliver pausen 10ms, og
uanset hvilket tal jeg skriver mellem 11 og 20 så bliver pause på 20ms. Jeg
har ikke prøvet med tal over 20 men jeg kunne da forestille mig at det
fortsætter opad sådan.

Er det en bug i Delphi eller hur?

Mvh
HK




Harald (30-07-2002)
Kommentar
Fra : Harald


Dato : 30-07-02 16:55

"Harald" <swobu@kroning.dk> skrev i en meddelelse
news:3d468860$0$1550$edfadb0f@dspool01.news.tele.dk...
> "Harald" <swobu@kroning.dk> skrev i en meddelelse
> news:3d46830c$0$1248$edfadb0f@dspool01.news.tele.dk...
> Det ser ud til at functionen Sleep ikke kan holde en pause i f.eks. 5 ms,
> uanset hvilket tal jeg skriver mellem 1 og 10 så bliver pausen 10ms, og
> uanset hvilket tal jeg skriver mellem 11 og 20 så bliver pause på 20ms.
Jeg
> har ikke prøvet med tal over 20 men jeg kunne da forestille mig at det
> fortsætter opad sådan.
>
> Er det en bug i Delphi eller hur?

Har prøvet med delphi 4 og det giver samme resultat. Det viser sig også at
functionen GetTickCount springer med 10 ms af gangen. Jeg bruger WindowsXP
kan det have noget at sige?

Mvh
HK




Uffe Kousgaard (30-07-2002)
Kommentar
Fra : Uffe Kousgaard


Dato : 30-07-02 21:57

"Harald" <swobu@kroning.dk> wrote in message
news:3d46b6e7$0$73463$edfadb0f@dspool01.news.tele.dk...
> Har prøvet med delphi 4 og det giver samme resultat. Det viser sig også at
> functionen GetTickCount springer med 10 ms af gangen. Jeg bruger WindowsXP
> kan det have noget at sige?
>
Det bliver bare aldrig mere præcist med GetTickCount. Du skal bruge
specielle konstruktioner, hvor der i koden tages hensyn til
eksekveringstiden af de enkelte ordrer, hvis det er til at tage måle tid
med.

Ellers prøv nogle "dummy" loops, som du lader køre indtil regnetiden er lang
nok til, at du kan måle tiden præcist. Derefter skal løkken køre tilsvarende
kortere tid. Lidt besværligt, hvis det skal flyttes fra én maskine til en
anden.



Harald (30-07-2002)
Kommentar
Fra : Harald


Dato : 30-07-02 22:47

"Uffe Kousgaard" <uffe@routeware.dk> skrev i en meddelelse
news:3d46fd87$0$73552$edfadb0f@dspool01.news.tele.dk...
> "Harald" <swobu@kroning.dk> wrote in message
> news:3d46b6e7$0$73463$edfadb0f@dspool01.news.tele.dk...
> > Har prøvet med delphi 4 og det giver samme resultat. Det viser sig også
at
> > functionen GetTickCount springer med 10 ms af gangen. Jeg bruger
WindowsXP
> > kan det have noget at sige?
> >
> Det bliver bare aldrig mere præcist med GetTickCount. Du skal bruge
> specielle konstruktioner, hvor der i koden tages hensyn til
> eksekveringstiden af de enkelte ordrer, hvis det er til at tage måle tid
> med.
>
> Ellers prøv nogle "dummy" loops, som du lader køre indtil regnetiden er
lang
> nok til, at du kan måle tiden præcist. Derefter skal løkken køre
tilsvarende
> kortere tid. Lidt besværligt, hvis det skal flyttes fra én maskine til en
> anden.

Eller hvis computeren bliver sat til at lave andet så ændres det også.

Har testet på en win98 maskine og på den springer GetTickCount 5ms af
gangen?




Ove Kjeldgaard (31-07-2002)
Kommentar
Fra : Ove Kjeldgaard


Dato : 31-07-02 16:59

"Harald" <swobu@kroning.dk> wrote:
>>> snip <<<
>
>Eller hvis computeren bliver sat til at lave andet så ændres det også.
>
>Har testet på en win98 maskine og på den springer GetTickCount 5ms af
>gangen?
>

Jeg vil vove denne påstand:
Tider på under nogle sekunder, er umulige at få nøjagtige på en maskine der
kører Windows...

--
Med venlig hilsen, Ove Kjeldgaard
Natur og Friluftsliv: <http://hiker.dk>

Lars Bargmann (01-08-2002)
Kommentar
Fra : Lars Bargmann


Dato : 01-08-02 13:06

Hmmm, jeg kan huske noget med at en fætter ved navn Martin Waldenberg eller
lignende har lavet en meget højopløselig timer.... Prøv at finde ham på
www.torry.net

"Ove Kjeldgaard" <ok@mail.tele.dk> wrote in message
news:3d480860.2745507@dtext.news.tele.dk...
> "Harald" <swobu@kroning.dk> wrote:
> >>> snip <<<
> >
> >Eller hvis computeren bliver sat til at lave andet så ændres det også.
> >
> >Har testet på en win98 maskine og på den springer GetTickCount 5ms af
> >gangen?
> >
>
> Jeg vil vove denne påstand:
> Tider på under nogle sekunder, er umulige at få nøjagtige på en maskine
der
> kører Windows...
>
> --
> Med venlig hilsen, Ove Kjeldgaard
> Natur og Friluftsliv: <http://hiker.dk>



Harald (02-08-2002)
Kommentar
Fra : Harald


Dato : 02-08-02 22:20

"Lars Bargmann" <lars@bargmann.dk> skrev i en meddelelse
news:3d492249$0$1226$edfadb0f@dspool01.news.tele.dk...
> Hmmm, jeg kan huske noget med at en fætter ved navn Martin Waldenberg
eller
> lignende har lavet en meget højopløselig timer.... Prøv at finde ham på
> www.torry.net

Jeg fandt ikke lige noget med ham men en del andre. Men så har jeg i mellem
tiden også funden denne text i Win32 DR
**********
In Win32-based applications, the GetTickCount() timer resolution on Windows
NT, version 3.1, is 15 milliseconds (ms) for x86 and 10 ms for MIPS and
Alpha. On Windows NT, version 3.5, the GetTickCount() timer resolution is
10 ms on the 486 or greater, but the resolution is still 15 ms on a 386.

NOTE: The measurements in milliseconds indicate the period of the
interrupt, not the units of the returned value.

The Win32 API QueryPerformanceCounter() returns the resolution of a high-
resolution performance counter if the hardware supports one. For x86, the
resolution is about 0.8 microseconds (0.0008 ms). For MIPS, the resolution
is about twice the clock speed of the processor. You need to call
QueryPerformanceFrequency() to get the frequency of the high-resolution
performance counter.
************

Nu har jeg lavet en løsning med QueryPerformanceCounter, og det virker fint.

Mvh
HK




Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste