Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [Prog] Timer in VBA (https://forum.scholieren.com/showthread.php?t=859952)

VoRaZ 04-06-2004 08:10

[Prog] Timer in VBA
 
Waar kan ik een timer vandaan halen die een lagere interval ondersteunt dan 55ms? Ik heb HiTime van Mabry gevonden, maar daar moet je of voor betalen of je krijgt heel veel "popups" tijdens het gebruik van het programma...

Of mss dat iemand een truukje weet om de timer nauwkeuriger te laten werken?

[Edit] Nog een vraagje trouwens: hoe kan ik de kleur van een progressbar veranderen? (Ik maak een spel waarbij ik em als healthbalk wil gebruiken).
[/Edit]

iamcj 04-06-2004 18:32

Zet dit in een klasse:
Code:

'---------------------------------------------------------------------------------------
' Module    : CTimer
' DateTime  : 3-2-2004 19:58
' Author    : Corjan van Uffelen
' Purpose  : Bepalen hoeveelheid tijd een procedure in beslag neemt
'---------------------------------------------------------------------------------------
' Tijdsfuncties worden dmv API uit de kernel gehaald

Option Compare Database
Option Explicit

Private Declare Function Frequency Lib "kernel32" _
              Alias "QueryPerformanceFrequency" (lpFrequency As Currency) As Long

Private Declare Function Counter Lib "kernel32" _
              Alias "QueryPerformanceCounter" (lpPerformanceCount As Currency) As Long

Dim cyFrequency As Currency
Dim cyStart As Currency
Dim cyStop As Currency

Private Sub Class_Initialize()
  Frequency cyFrequency
End Sub

Public Function StartTimer()
  Counter cyStart
End Function

Public Function StopTimer()
  Counter cyStop
End Function

Public Property Get Elapsed() As Double
  Elapsed = ((cyStop + 0.001) - cyStart) / (cyFrequency + 0.001)
End Property

Public Property Get Elap() As Double
  StopTimer
  Elap = Me.Elapsed
  StartTimer
End Property

En dit in een module:

Code:

Sub TestTimer()
  Dim i As Long
  Dim obTimer As New CTimer
 
  obTimer.StartTimer

    'Jouw process

  obTimer.StopTimer
  Debug.Print obTimer.Elapsed
End Sub

Hiermee kun je dus ook je eigen "Timer" bouwen door een tijdsinterval te controleren.

Warsocket 06-06-2004 13:18

Dit voorbeeld hierboven is toch wel heel veel code


dim LastTick as long
dim CurrentTick as long

Private Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long


^^^^^^^^ dat moet in een general Declarations (of in een module)

Do

CurrentTick = getTickCount
if LastTick + (hier de waarde van het aantal ms dat ie moet wachten) < CurrentTick then
LastTick = CurrentTick
hier wat ie om de tijdsinterval moet doen
End If

Loop



Private Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long

maar dit is het belangrijkste
GetTickCount is een teller die tel in ms hoe lang je pc opstaat

dus als je moet timen

gewoon als je begint de waarde opslaan in e en variable en als je stop ook

ff van elkaar aftrekken en je het de precieze tijd in ms

VoRaZ 06-06-2004 15:43

alleen zo berekent ie toch ook geen andere berekeningen meer? Of heb ik 't verkeerd begrepen :(


Alle tijden zijn GMT +1. Het is nu 00:46.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.