ich führe das ganze in einem Thread aus
Code: Alles auswählen
oThread:SetInterval( 5 )
bei 1000 / 20 = 50 Sekunden
nun braucht er aber "nur" 37.5 bzw 38.5 Sekunden was doch "zu schnell" ist oder ?
Die Zeiten kann ich auch ungefähr mit meinem iPhone messen also zeigt er nicht nur Mist an.100 75159859 75122734 37125 37500.00 0 100
101 75160234 75122734 37500 37500.00 0 101
102 75160609 75122734 37875 37500.00 0 102
103 75160984 75122734 38250 37500.00 -1 103
104 75161359 75122734 38625 37500.00 -1 104
105 75161734 75122734 39000 37500.00 -2 105
106 75162109 75122734 39375 37500.00 -2 106
2 75163234 75162859 375 37500.00 37 2
639 74913640 74873765 39875 38125.00 -2 639
2 74913828 74913765 63 38430.00 38 2
das ist der Code zum berechnen
Code: Alles auswählen
METHOD DXE_ProgressBar:CalcTime()
nProz := ROUND( nRange / ::nMaxProz ,0)
IF (::nValue % nProz) == 0
IF ::nCount = 0
::nStart := SystemUpTime()
::nCount++ // now increase counter
RETURN ::cTimeText
ENDIF
::nStop := SystemUpTime()
nSum := ::nStop - ::nStart // Ticks in milliseconds
nFull := (nSum / ::nCount) * (::nMaxProz) // calculate Max Time
nTime := ROUND( (nFull - nSum) / 1000,0) // time left
::nCount++ // now increase counter
// debug
nPart := ROUND(::nValue/nProz ,0)
OnDummy(::nCount,::nStop,::nStart, nSum, nFull, nTime , nPart)
---
Nachtrag : die Erklärung ist einfach ... ich hatte das Maximum verändert
Code: Alles auswählen
* oProgress:Maximum := 1000
oProgress:Maximum := aSize[1]