Forum: PC-Programmierung VB For Next zählt index doppelt hoch


von Andre (Gast)


Lesenswert?

Hallo,

ich hab da ein Problem mit VB12.

Die Zählvariable wird in der zweiten For .. Next Schleife zweimal 
hochgezählt. Das der Debugger zumindest an.
1
    Private Sub DataReceivedHandler(sender As Object, e As SerialDataReceivedEventArgs)
2
3
        Dim recBuffer(200) As Char
4
        Dim i As Integer
5
        Dim sp As SerialPort = CType(sender, SerialPort)
6
        Dim BytesToRead As Integer
7
8
        i = 0
9
10
        For i = 0 To 200
11
            recBuffer(i) = vbNullChar
12
        Next
13
14
        BytesToRead = sp.BytesToRead
15
        sp.Read(recBuffer, 0, BytesToRead)
16
17
        i = 0
18
19
        For n As Integer = 0 To BytesToRead - 1 Step 1
20
            inBuffer(RXinPtr) = recBuffer(n)
21
            n = n + 1
22
            If inBuffer(RXinPtr) = vbLf Then
23
                NewSerialData = True
24
            End If
25
            RXinPtr = RXinPtr + 1
26
            If RXinPtr > 200 Then
27
                RXinPtr = 0
28
            End If
29
        Next
30
31
    End Sub

Woran kann das liegen?

von Peter II (Gast)


Lesenswert?

Andre schrieb:
> Woran kann das liegen?

 n = n + 1

das macht kann sinn in einer schleife, dann das macht die schleife von 
selber.


Es auch auch kein sinn das Array vorher leer zu machen, wennn du es 
gleich danach mit Daten befüllst.

Und die Prüfst auch nicht wie viele Daten gelesen wurden, du geht 
einfach davon aus das Read alles liest - das muss aber nicht so sein.

von Andre (Gast)


Lesenswert?

OMG,

manchmal sieht man den Wald vor lauter Bäumen nicht.
Da war vorher ein while-Schleife.

Dankeschön.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.