Brauche Hilfe bei: Streamreader/writer Dateiddownload - Parameterübergabe

  • VB.NET

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

    Brauche Hilfe bei: Streamreader/writer Dateiddownload - Parameterübergabe

    Hallo Forum,

    ich brauche mal wieder euren Rat.
    Ich möchte mit meinem Programm Dateien von einer Internetseite runterladen. (Es geht hierbei um Custom-Maps für das Spiel Warcraft 3)

    Den Download für eine einzelne Datei hab ich auch schon hinbekommen.
    Jetzt möchte ich aber mehrere Dateien herunterladen.
    Ich kriege mit einer ersten ForEach - Schleife die unterschiedlichen Downloadlinks und schreibe diese in eine Listbox.
    Mit einer zweiten ForEach - Schleife kriege ich die Dateinamen und schreibe die ebenfalls in eine Listbox.

    Mein Problem ist jetzt wie ich die Strings der URL und des Dateinamen an die Downloadprozedur übergeben kann.

    Mit dieser Prozedur ermittel ich die Daten:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Sub FindHrefs(ByVal inputString As String) 'Es wird eine Internetseite mit einer Liste von herunterladbaren Dateien übergeben
    2. Try
    3. Dim sURLPrefix As String = "http://www.epicwar.com"
    4. 'Downloadlink ermitteln
    5. For Each match1 As Match In Regex.Matches(inputString, ""href=""(?<url>/maps/download/.*?)"")
    6. lstLinkList.Items.Add(match1.Groups("url").Value)
    7. Next
    8. 'Dateinamen ermitteln
    9. For Each match2 As Match In Regex.Matches(inputString, ""(>[a-zA-Z0-9\[\].\)\(\s_-]*?\.w3[mx]?)"")
    10. Dim c1 = match2.Groups(1)
    11. ListBox1.Items.Add(c1.ToString().Remove(0, 1))
    12. Next
    13. 'Downloadprozedur rufen
    14. 'dldNewMaps(sURLPrefix & @Downloadlink, My.Settings.PathNewUnknownMap & "@Name")
    15. Label1.Text = "Gefunden: " & lstLinkList.Items.Count.ToString
    16. Label2.Text = "Gefunden: " & ListBox1.Items.Count.ToString
    17. Catch ex As Exception
    18. MsgBox(ex.ToString)
    19. End Try
    20. End Sub

    Picknicker93 schrieb:

    Mein Problem ist jetzt wie ich die Strings der URL und des Dateinamen an die Downloadprozedur übergeben kann.
    Ich sehe da kein Problem. :S
    Sieh Dir mal die Klasse Uri an.
    Wenn Du parallel downloaden willst, Gugst Du hier.
    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!
    Hey,

    das mit dem parallel downloaden schaue ich mir das Wochenende sicherlich mal an, danke. :)
    Das Problem was ich habe ist natürlich nicht wie ich die übergebe, das Problem ist viel mehr wie ich die Downloadprozedur für jede URL aus der ersten Schleife aufrufen kann, gleichzeitig aber auch den Namen aus der anderen Schleife mitgebe.
    Gibt es Möglichkeiten die RegEx-Abfragen in einer Schleife gleichzeitig abzuhandeln?
    Oder kann ich die Ergbnisse der beiden Schleifen gleichzeitig abfangen und dann an meine Prozedur geben?

    Picknicker93 schrieb:

    Gibt es Möglichkeiten die RegEx-Abfragen in einer Schleife gleichzeitig abzuhandeln?
    Nein, der Suchtext wird doch sequentiell abgearbeitet.
    Du kannst aber die Ergebnisse der Suche in eine List(Of ...) packen und dann parallel downloaden, das dürfte performanter sein.
    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!