Hallo,
ich habe ein Programm, in welchem Daten in einem Vektor gespeichert werden, dann mit diesen Daten gerechnet werden sollen und abhhängig von diesen Daten eine Picturebox Bewegt werden soll. Mein Problem ist, dass zu der Textdatei welche ausgelesen wird immer neue Daten hinzugeschrieben werden. Wie kann ich und vorallem wo am besten in meinem Code den Vektor auf neue Daten überprüfen ? Die weiter Frage ist wie kann ich verhindern, dass die Picturebox welche abhängig von der Berechnung bewegt wird nicht aus dem "Rand" verschwindet? (Mein Versuch dazu ist auskommentiert im Code). Zur Information in berechnen wird später ein Algorithmus eingefügt das ist erst ein test.
ich habe ein Programm, in welchem Daten in einem Vektor gespeichert werden, dann mit diesen Daten gerechnet werden sollen und abhhängig von diesen Daten eine Picturebox Bewegt werden soll. Mein Problem ist, dass zu der Textdatei welche ausgelesen wird immer neue Daten hinzugeschrieben werden. Wie kann ich und vorallem wo am besten in meinem Code den Vektor auf neue Daten überprüfen ? Die weiter Frage ist wie kann ich verhindern, dass die Picturebox welche abhängig von der Berechnung bewegt wird nicht aus dem "Rand" verschwindet? (Mein Versuch dazu ist auskommentiert im Code). Zur Information in berechnen wird später ein Algorithmus eingefügt das ist erst ein test.
VB.NET-Quellcode
- Option Explicit On
- Imports System.IO
- Public Class Form1
- Dim DoubleData() As Double
- Dim counter As Integer
- Private Async Sub Get_Data()
- Const DATEINAME As String ="'C:\Users\Admin\Documents\jonasbanddats140.txt"
- Dim fs As FileStream = New FileStream(DATEINAME, FileMode.OpenOrCreate, FileAccess.ReadWrite) 'erstellen des FileStream
- Dim dummy_d() As String
- Dim i As Integer
- Dim komma As String = ","
- Dim punkt As String = "."
- Dim r As StreamReader = New StreamReader(fs) ' --- Zeiger auf den Anfang
- While Not r.EndOfStream
- Try
- Do
- dummy_d = r.ReadLine.Split(CChar(";")) 'nach ; Splitten
- counter = CInt(dummy_d.Length) 'Vektorlänge = Anzahl der Werte
- ReDim DoubleData(counter) 'oder ReDim Preserve Vektor löschen oder nicht
- For i = 1 To counter
- DoubleData(i) = CDbl(dummy_d(i).Replace(punkt, komma)) ' In DoubleVektor warum punkt komma problem
- ' Debug.Print(CStr(DoubleData(i)) & " " & CStr(i))
- Await Task.Delay(100) 'Dieser Delay wurde ausgeführt, damit dauerhaft in den Vektor geschrieben wird und das einlesen nicht beendet wird
- Next
- Loop
- Catch ex As Exception
- 'MsgBox(ex.Message)
- End Try
- End While
- r.Close() ' --- Reader und Stream schließen
- fs.Close()
- End Sub
- Private Async Sub Rechnen()
- Dim Wert As Double = 0.85
- For i = 1 To counter
- If DoubleData(i) > Wert Then
- PictureBox2.Location = New Point(PictureBox2.Location.X, PictureBox2.Location.Y - 3)
- 'If PictureBox2.Location.Y < Me.Location.Y Then
- ' PictureBox2.Location = New Point(PictureBox2.Location.X, PictureBox2.Location.Y) 'Versuch die Picturebox nicht aus dem Tand zu bekommen
- 'End If
- End If
- If DoubleData(i) < Wert Then
- PictureBox2.Location = New Point(PictureBox2.Location.X, PictureBox2.Location.Y + 3)
- 'If PictureBox2.Location.Y > Me.Location.Y Then
- ' PictureBox2.Location = New Point(PictureBox2.Location.X, PictureBox2.Location.Y)
- 'End If
- End If
- Await Task.Delay(250)
- Next
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Call Get_Data()
- Call abrunden()
- Call Rechnen()
- End Sub
- Private Sub abrunden()
- Dim YourPb As Object
- Dim Posx, Posy, diameter As Integer
- YourPb = PictureBox2
- Posx = 13
- Posy = 20
- diameter = 54
- Using gp As New System.Drawing.Drawing2D.GraphicsPath()
- gp.AddEllipse(Posx, Posy, diameter, diameter)
- YourPb.region = New System.Drawing.Region(gp)
- End Using
- End Class