Files
laatzen/Pruef2000/source/clsMittelwert.cls
T
2021-10-01 11:11:04 +02:00

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