Einfach einbinden und statt ElapsedMilliseconds() immer GetTimeMS() verwenden, sollte keine Probleme geben.
Code: Alles auswählen
; ------------------------------------------------------------------------------------
; HighRes - Timer
; PB 4.x
; Alexander Aigner
;
; Funktionen:
;
; GetTimeMS()
; ------------------------------------------------------------------------------------
Prototype.l HR_Time()
; ------------------------------------------------------------------------------------
; Interne Variablen
; ------------------------------------------------------------------------------------
Structure _HR_Internal
TicksPerSecond.l
Frequency.q
StartTime.q
EndStructure
Define _HR._HR_Internal
Global GetTimeMS.HR_Time
; ------------------------------------------------------------------------------------
; Interne Proceduren
; ------------------------------------------------------------------------------------
Procedure.l _HR_InitTime()
Shared _HR._HR_Internal
With _HR
If Not QueryPerformanceFrequency_(@\Frequency)
ProcedureReturn 0
Else
QueryPerformanceCounter_(@\StartTime)
\TicksPerSecond = 1000 ; 1000 = Millisekunden
ProcedureReturn 1
EndIf
EndWith
EndProcedure
Procedure.l _HR_Get()
Shared _HR._HR_Internal
Protected currentTime.q
With _HR
QueryPerformanceCounter_(@currentTime.q)
ProcedureReturn (currentTime-\StartTime)*\TicksPerSecond/\Frequency
EndWith
EndProcedure
Procedure _HR_oldPC_or_Linux()
ProcedureReturn ElapsedMilliseconds()
EndProcedure
; ------------------------------------------------------------------------------------
; Initialisierung
; ------------------------------------------------------------------------------------
CompilerIf #PB_Compiler_OS <> #PB_OS_Windows
GetTimeMS = @_HR_oldPC_or_Linux()
CompilerElse
If _HR_InitTime()
GetTimeMS = @_HR_Get()
Else
GetTimeMS = @_HR_oldPC_or_Linux()
EndIf
CompilerEndIf