Hallo Zusammen
Ich komme mit dem folgenden Problem einfach nicht weiter.
Ich habe eine unbekannte Anzahl an Datensätzen. Und jeder Datensatz kann wiederum eine unbekannte Anzahl an Messwerten haben.
Ich habe mir mal eine Klasse mit Properties angelegt:
Spoiler anzeigen
Darin kann man ID und MaxItems speichern.
Wird MaxItems verändert, oder ein Wert hinzugefügt, wird automatisch mit der Funktion LimitValues die maximale Anzahl an Einträgen begrenzt.
Das funktioniert.
Nun muss ich "nur noch" eine List(of dieserKlasse) machen.
Das sieht bei mir so aus:
Spoiler anzeigen
Lasse ich das bis zum ersten Stop laufen, ist alles gut. In LM stehen alle Werte korrekt.
Steppe ich danach aber weiter, bis MathTmp.MaxItems = 0 ausgeführt wird, dann wird auch in LM alle Werte gelöscht.
Was mache ich Anfänger hier falsch?
Veronesi
Ich komme mit dem folgenden Problem einfach nicht weiter.
Ich habe eine unbekannte Anzahl an Datensätzen. Und jeder Datensatz kann wiederum eine unbekannte Anzahl an Messwerten haben.
Ich habe mir mal eine Klasse mit Properties angelegt:
VB.NET-Quellcode
- Public Class MathSensCalc
- Public Sub New()
- _ID = -1
- _MaxItems = 0
- _Values = New List(Of Double)
- _AddValue = 0
- End Sub
- Private _ID As Integer
- Public Property ID As Integer
- Get
- Return _ID
- End Get
- Set(value As Integer)
- _ID = value
- End Set
- End Property
- Private _MaxItems As Integer
- Public Property MaxItems As Integer
- Get
- Return _MaxItems
- End Get
- Set(value As Integer)
- _MaxItems = value
- LimitValues()
- End Set
- End Property
- Private _Values As List(Of Double)
- Public Property Values As List(Of Double)
- Get
- Return _Values
- End Get
- Set(value As List(Of Double))
- _Values = value
- LimitValues()
- End Set
- End Property
- Private _AddValue As Double
- Public WriteOnly Property AddValue As Double
- Set(value As Double)
- Dim v As List(Of Double) = Me.Values
- v.Add(value)
- Me.Values = v
- End Set
- End Property
- Private Sub LimitValues()
- If _Values.Count > _MaxItems Then
- If _MaxItems = 0 Then 'Delete!
- _ID = -1
- _Values.RemoveRange(0, _Values.Count)
- Else 'Limit to MaxItems
- While _Values.Count > _MaxItems
- _Values.RemoveAt(0)
- End While
- End If
- End If
- End Sub
- End Class
Darin kann man ID und MaxItems speichern.
Wird MaxItems verändert, oder ein Wert hinzugefügt, wird automatisch mit der Funktion LimitValues die maximale Anzahl an Einträgen begrenzt.
Das funktioniert.
Nun muss ich "nur noch" eine List(of dieserKlasse) machen.
Das sieht bei mir so aus:
VB.NET-Quellcode
- Public Class Form1
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Dim LM As New List(Of MathSensCalc)
- Dim MathTmp As New MathSensCalc
- MathTmp.ID = 1
- MathTmp.MaxItems = 10
- For i As Integer = 0 To 15
- MathTmp.AddValue = i
- Next
- LM.Add(MathTmp)
- Stop
- MathTmp.MaxItems = 0
- MathTmp.ID = 2
- MathTmp.MaxItems = 3
- For i As Integer = 0 To 15
- MathTmp.AddValue = i
- Next
- LM.Add(MathTmp)
- MathTmp.MaxItems = 0
- Stop
- End Sub
- End Class
Lasse ich das bis zum ersten Stop laufen, ist alles gut. In LM stehen alle Werte korrekt.
Steppe ich danach aber weiter, bis MathTmp.MaxItems = 0 ausgeführt wird, dann wird auch in LM alle Werte gelöscht.
Was mache ich Anfänger hier falsch?
Veronesi