ArgumentOutOfRangeException

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    ArgumentOutOfRangeException

    Hiiii Co ich habe heute/eben ein Youtube downloader programmiert aber er zeigt mir nen fehler an und ich komm nicht weiter ;(

    Projekt screen: i39.tinypic.com/2duww6.png
    Errorscreen: i43.tinypic.com/20g1m2x.png
    fehler code:

    VB.NET-Quellcode

    1. Dim Part1 As String = inhalt.Substring(pos).Replace("%3F", "?").Replace("%3D", "=").Replace("%26", "&").Replace("%25", "%").Replace("%2C", ",").Replace("%25", "%").Replace("%3A", ":").Replace("%2F", "/").Substring(31)

    vollständiger code:

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.IO
    3. Imports System.Text.RegularExpressions
    4. Public Class Form1
    5. Public Sub Get_Video_Info(ByVal Link As String)
    6. Dim Request As HttpWebRequest = HttpWebRequest.Create(Link)
    7. Dim Response As HttpWebResponse = Request.GetResponse()
    8. Dim reader As StreamReader = New StreamReader(Response.GetResponseStream)
    9. Dim httpContent As String
    10. httpContent = reader.ReadToEnd
    11. Dim TitleRegEx As New Regex("title=""(?(.*))"" />")
    12. Dim title As String
    13. title = TitleRegEx.Match(httpContent).Groups("Title").ToString
    14. Dim i As ListViewItem
    15. i = ListView1.Items.Add(Link)
    16. With i
    17. .SubItems.Add(title)
    18. End With
    19. End Sub
    20. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    21. If ListView1.SelectedItems.Count <> 1 Then
    22. Dim Link As String
    23. Link = InputBox("Bitte Ihr Youtube Link Eingeben ;)")
    24. Get_Video_Info(Link)
    25. Button3.Enabled = True
    26. Else
    27. Dim t As String = ListView1.FocusedItem.Tag
    28. Dim ID As String = ListView1.FocusedItem.Text
    29. End If
    30. End Sub
    31. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    32. If ListView1.SelectedItems.Count <> 1 Then
    33. Else
    34. Dim t As String = ListView1.FocusedItem.Tag
    35. Dim ID As String = ListView1.FocusedItem.Text
    36. End If
    37. SaveFileDialog1.ShowDialog()
    38. End Sub
    39. Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
    40. Button3.Enabled = False
    41. Button3.Text = "Downloading"
    42. Dim ID As String
    43. ID = ListView1.Text.Replace("http://www.youtube.com/watch?v=", "")
    44. Dim link1 As String
    45. link1 = "http://www.youtube.com/get_video_info?video_id=" & ID & "&fmt=37"
    46. Dim inhalt As String
    47. inhalt = WebClient1.DownloadString(link1)
    48. Dim pos As Integer = inhalt.IndexOf("url_encoded_fmt_stream_map=")
    49. Dim Part1 As String = inhalt.Substring(pos).Replace("%3F", "?").Replace("%3D", "=").Replace("%26", "&").Replace("%25", "%").Replace("%2C", ",").Replace("%25", "%").Replace("%3A", ":").Replace("%2F", "/").Substring(31)
    50. Dim Part2 As String = Part1.Substring(0, Part1.IndexOf("&fallback_host"))
    51. Dim Downloadlink As String
    52. Downloadlink = Part2.Replace("%3F", "?").Replace("%3D", "=").Replace("%26", "&").Replace("%25", "%").Replace("%2C", ",").Replace("%25", "%").Replace("%3A", ":").Replace("%2F", "/")
    53. WebClient1.DownloadFileAsync(New Uri(Downloadlink), SaveFileDialog1.FileName)
    54. End Sub
    55. Private Sub WebClient1_DownloadFileCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles WebClient1.DownloadFileCompleted
    56. Dim i As Integer = MessageBox.Show("Datei wurde erfolgreich runtergeladen." & vbNewLine & "Wollen sie diese nun öffnen ?", "Finish", MessageBoxButtons.OKCancel)
    57. If i = "1" Then
    58. Process.Start(SaveFileDialog1.FileName)
    59. Else
    60. Application.Exit()
    61. End If
    62. End Sub
    63. Private Sub WebClient1_DownloadProgressChanged(ByVal sender As System.Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles WebClient1.DownloadProgressChanged
    64. ProgressBar1.Value = e.ProgressPercentage
    65. Button3.Text = "Downloading " & e.ProgressPercentage & "%"
    66. End Sub
    67. End Class

    Bitte Um Hilfe

    Lg Getsha

    Edit by Manschula: Bitte Code-Tags sowie einen aussagekräftigen Titel (<> "Hilfe") verwenden --> VB-Tag eingefügt, Titel geändert
    Public Signatur

    Dim Mfg As Mit freundlichen grüßen
    Dim Getsha As User.Getsha

    Mfg.Getsha()

    End Signatur

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manschula“ ()

    VB-Tag richtig benutzen

    und dann kann auf VBParadise auch direkt Bilder hochgeladen wern, dass man nicht auf komische Sites muß.

    Zum Prob: Ich denke, durch die ganzen Replaces verkürzt sich der String, und dann stimmt die Position nicht mehr.
    Oder das .IndexOf zuvor hat ühaupt keinen Treffer geliefert, und pos steht auf -1.
    Klicke die Fehlermeldung weg, klicke auf den String und drücke Schift+F9. Stimmt der Inhalt des Strings mit Deinen Erwartungen überein?
    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!
    Ja hab Strg+f9 gedrückt jetzt hat er den link gelb gelasen aber ist immer noch fehler was mach ich jetzt?

    VB.NET-Quellcode

    1. Dim Part1 As String = inhalt.Substring(pos).Replace("%3F", "?").Replace("%3D", "=").Replace("%26", "&").Replace("%25", "%").Replace("%2C", ",").Replace("%25", "%").Replace("%3A", ":").Replace("%2F", "/").Substring(31)
    Public Signatur

    Dim Mfg As Mit freundlichen grüßen
    Dim Getsha As User.Getsha

    Mfg.Getsha()

    End Signatur
    Was steht denn in der Variable Inhalt drin?
    Mach mal das Zeugs alles in je eine Zeile:

    VB.NET-Quellcode

    1. inhalt = inhalt.Substring(pos).Replace("%3F", "?")
    2. ' usw.
    und sieh Dir in jeder Zeile an, was er gemacht hat.
    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!
    Meinste so oder wie? (wenn nicht dann srry)

    VB.NET-Quellcode

    1. Dim Part1 As String = inhalt.Substring(pos)

    VB.NET-Quellcode

    1. Replace("?", "?")

    VB.NET-Quellcode

    1. Replace("=", "=")

    VB.NET-Quellcode

    1. Replace("&", "&")

    VB.NET-Quellcode

    1. Replace("%", "%")

    VB.NET-Quellcode

    1. Replace(",", ",")

    VB.NET-Quellcode

    1. Replace("%", "%")

    VB.NET-Quellcode

    1. Replace(":", ":")

    VB.NET-Quellcode

    1. Replace("/", "/")

    VB.NET-Quellcode

    1. Substring(31)


    Originaler Code:

    VB.NET-Quellcode

    1. Dim Part1 As String = inhalt.Substring(pos).Replace("%3F", "?").Replace("%3D", "=").Replace("%26", "&").Replace("%25", "%").Replace("%2C", ",").Replace("%25", "%").Replace("%3A", ":").Replace("%2F", "/").Substring(31)
    Public Signatur

    Dim Mfg As Mit freundlichen grüßen
    Dim Getsha As User.Getsha

    Mfg.Getsha()

    End Signatur

    getsha schrieb:

    Meinste so oder wie?
    So:

    VB.NET-Quellcode

    1. Inhalt = Inhalt.Substring(pos)
    2. Inhalt = Inhalt.Replace("%3F", "?")
    3. Inhalt = Inhalt.Replace("%3D", "=")
    4. Inhalt = Inhalt.Replace("%26", "&")
    5. Inhalt = Inhalt.Replace("%25", "%")
    6. Inhalt = Inhalt.Replace("%2C", ",")
    7. Inhalt = Inhalt.Replace("%25", "%")
    8. Inhalt = Inhalt.Replace("%3A", ":")
    9. Inhalt = Inhalt.Replace("%2F", "/")
    10. Dim Part1 As String = Inhalt.Substring(31)
    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!