Arithmetischer Überlauf

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von SeriTools.

    Arithmetischer Überlauf

    Hi,
    mir wird angegeben: Der arithmetische Operator hat einen Überlauf verursacht!

    VB.NET-Quellcode

    1. Dim wr As HttpWebRequest = CType(HttpWebRequest.Create("http://ndrstream.ic.llnwd.net/stream/ndrstream_ndr2_hi_mp3"), HttpWebRequest)
    2. Dim ws As HttpWebResponse = CType(wr.GetResponse(), HttpWebResponse)
    3. Dim str As Stream = ws.GetResponseStream()
    4. Dim inBuf(2000) As Byte
    5. Dim bytesToRead As Integer = CInt(inBuf.Length)
    6. Dim bytesRead As Integer = 0
    7. Dim n As Integer = Str.Read(inBuf, bytesRead, bytesToRead)
    8. While n > 0
    9. If n = 0 Then
    10. Exit While
    11. End If
    12. bytesRead += n
    13. bytesToRead -= n
    14. End While
    15. Dim fstr As New FileStream(Application.StartupPath & "Aufnahme" & My.Settings.Aufnahmeanzahl & ".wma", FileMode.Append, FileAccess.Write)
    16. fstr.Write(inBuf, 0, bytesRead)
    17. Str.Close()
    18. fstr.Close()
    19. My.Settings.Aufnahmeanzahl += 1
    20. Catch ex As Exception
    21. MsgBox(ex.Message)
    22. End Try


    Kann mir jemand helfen?
    Kannst Du die Zeile benennen, in der der Überlauf auftritt?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    In der Zeile

    VB.NET-Quellcode

    1. bytesRead += n


    Ich hab etz a Lösung gfunden! Aber wenn die While-Schleife läuft, ist das Programm nicht mehr Steuerbar, da das Programm nur mit der Shcleife beschäftigt ist. Wenn ich zB. auf Desktop klicke dann wieder auf mein Programm, dann wird das Fenster nicht mehr angezeigt = Software überlastet. Nach der Zeit(Lesen + Schreiben) läuft das Programm wieder normal!

    Wie optimieren?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Matze396“ ()

    Zunächst genügt es, wenn Du ein

    VB.NET-Quellcode

    1. Application.DoEvents()
    reinbaust. (@Dodo: Ich weiß, dass Dir das nicht gefällt.)
    Und bau Dir einen Annruch-Button rein, wenn es mal wieder etwas länger dauert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich progge seit ca 3 Monate keine VB, aber diese Zeile sied verdächtig aus:

    VB.NET-Quellcode

    1. My.Settings.Aufnahmeanzahl += 1

    Ist überhautpt möglich den Setting direkt inkrementieren ?
    Probiere zuerst den Wert aus Setting eine Variable zuweisen, dann die Variable inkrementieren.

    *

    VB.NET-Quellcode

    1. Dim Variable As Integer
    2. Variable = My.Settings.Aufnahmeanzahl
    3. Variable += 1


    oder

    *

    VB.NET-Quellcode

    1. Dim Variable As String
    2. Variable = My.Settings.Aufnahmeanzahl
    3. cint (Variable) += 1


    *Es kommt darauf welche Datentyp in Setting für speichern ein Zah/Zahlenl hast angelegt

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „SystemUnknow“ ()