92 lines
2.0 KiB
OpenEdge ABL
92 lines
2.0 KiB
OpenEdge ABL
VERSION 1.0 CLASS
|
|
BEGIN
|
|
MultiUse = -1 'True
|
|
Persistable = 0 'NotPersistable
|
|
DataBindingBehavior = 0 'vbNone
|
|
DataSourceBehavior = 0 'vbNone
|
|
MTSTransactionMode = 0 'NotAnMTSObject
|
|
END
|
|
Attribute VB_Name = "clsMittelwert"
|
|
Attribute VB_GlobalNameSpace = False
|
|
Attribute VB_Creatable = True
|
|
Attribute VB_PredeclaredId = False
|
|
Attribute VB_Exposed = False
|
|
Option Explicit
|
|
|
|
Private Ringpuffer() As Double
|
|
Private mlngZeiger As Long
|
|
Private mlngAnzahl As Long
|
|
Private mlngMax As Long
|
|
|
|
' Setze die Größe des Ringpuffers
|
|
Public Sub setMax(lngMax As Long)
|
|
If lngMax < mlngZeiger Then
|
|
mlngZeiger = 0
|
|
End If
|
|
|
|
If lngMax < mlngAnzahl Then
|
|
mlngAnzahl = lngMax
|
|
End If
|
|
|
|
mlngMax = lngMax
|
|
ReDim Preserve Ringpuffer(lngMax)
|
|
End Sub
|
|
|
|
' löscht den Ringpuffer. Der Mittelwert wird 0
|
|
Public Sub Clear()
|
|
mlngAnzahl = 0
|
|
mlngZeiger = 0
|
|
End Sub
|
|
|
|
|
|
Public Sub AddWert(dblWert As Double)
|
|
Dim i As Long
|
|
|
|
If mlngZeiger < mlngMax Then
|
|
mlngZeiger = mlngZeiger + 1
|
|
Else
|
|
mlngZeiger = 1
|
|
End If
|
|
|
|
If mlngAnzahl < mlngMax Then
|
|
For i = 1 To mlngMax
|
|
Ringpuffer(i) = dblWert
|
|
' Debug.Print i & "=" & Ringpuffer(i)
|
|
mlngAnzahl = mlngAnzahl + 1
|
|
Next
|
|
End If
|
|
|
|
Ringpuffer(mlngZeiger) = dblWert
|
|
|
|
|
|
|
|
' Debug.Print "anzahl= " & mlngAnzahl
|
|
' Debug.Print "zeiger= " & mlngZeiger
|
|
' Debug.Print "max= " & mlngMax
|
|
|
|
End Sub
|
|
|
|
Public Function GetWert() As Double
|
|
Dim lngZeiger As Long
|
|
Dim lngSumme As Double
|
|
' Debug.Print "---GetWert---"
|
|
|
|
For lngZeiger = 1 To mlngAnzahl
|
|
' If lngZeiger = mlngZeiger Then
|
|
' Debug.Print lngZeiger & "=" & Ringpuffer(lngZeiger) & " <= "
|
|
' Else
|
|
' Debug.Print lngZeiger & "=" & Ringpuffer(lngZeiger)
|
|
' End If
|
|
lngSumme = lngSumme + Ringpuffer(lngZeiger)
|
|
Next
|
|
If mlngAnzahl > 0 Then
|
|
GetWert = lngSumme / mlngAnzahl
|
|
End If
|
|
End Function
|
|
|
|
Private Sub Class_Initialize()
|
|
mlngMax = 10
|
|
ReDim Ringpuffer(mlngMax)
|
|
End Sub
|
|
|