Hallo Leute, danke für die Antworten.
Die Fehlerzeile ist Abc= Val(TextArray(1)) .
Ich benutze Visual Basic 2010 express.
Ich weiß jetzt aber nicht, was ich da verändern soll, damit der Fehler nicht mehr kommt.
Werbung
Hallo Leute, danke für die Antworten.
Die Fehlerzeile ist Abc= Val(TextArray(1)) .
Ich benutze Visual Basic 2010 express.
Ich weiß jetzt aber nicht, was ich da verändern soll, damit der Fehler nicht mehr kommt.
Lass dir mal ausgeben was alles in deinem TextArray drin ist. Die Fehlermeldung deutet daraufhin dass an der Stelle 1 kein Element ist.
Jetzt habe ich das mal gemacht, aber es kommt die gleiche Fehlermeldung, aber in einer anderen Zeile...
Die Fehlermeldung kommt jetzt in der Zeile : Terminal.AppendText(TextArray(1))
Meine Werte liegen nur so zur Info zwischen 0 und 800.
Code:Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Control.CheckForIllegalCrossThreadCalls = False Buffer = (SerialPort1.ReadExisting) 'Die Textbox heißt Terminal und die Daten werden dort 'hineinkopiert() 'Terminal.AppendText(Buffer) 'Terminal.ScrollToCaret() 'Dim Abc As Integer 'Abc = 10 Dim TextArray() As String = Split(Buffer, ",") Terminal.AppendText(TextArray(1)) Terminal.ScrollToCaret() 'Abc = Val(TextArray(1)) 'If (TextArray(0)) = "50" Then 'ProgressBar1.Value = Abc 'End If 'If TextArray(0) = "100" Then 'ProgressBar2.Value = Abc 'End If 'If TextArray(0) = "150" Then 'ProgressBar3.Value = Abc 'End If End Sub
Auch in den .net-versionen von VB muss das leere Array initialisiert werden, siehe hier:
http://msdn.microsoft.com/de-de/libr...=vs.90%29.aspx
Zitat:
„Leere Arrays. Die Obergrenze einer Arraydimension kann mit -1 deklariert werden. Dies bedeutet, dass das Array leer, jedoch nicht Nothing ist, eine Unterscheidung, die bei bestimmten Common Language Runtime-Funktionen wichtig ist. Visual Basic-Code kann auf ein solches Array jedoch nicht zugreifen. Wenn Sie es dennoch versuchen, tritt während der Ausführung ein IndexOutOfRangeException-Fehler auf. Weitere Informationen finden Sie unter Gewusst wie: Erstellen eines Arrays ohne Elemente.“
Da keine Grenzen genannt sind und das leere Array nicht initialisiert wurde, kommt beim ersten Aufruf in der Zeile
Terminal.AppendText(TextArray(1))
die Exception.
Es ist doch kein Aufwand, die Länge des Buffers (in VB6: Bufferlaenge = Len(Buffer)) zu bestimmen und in der Zeile vorher
Dim TextArray( Bufferlaenge ) As String = Split(Buffer, ",")
zu dimensionieren.
Zumindest kann man es ja mal ausprobieren.
Gruß, Günter49
Lesezeichen