Variablen eine Wert aus dem Internet zuweisen

  • VB.NET

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

    Variablen eine Wert aus dem Internet zuweisen

    Hallo!
    Ich programmiere gerade eine erweiterten HTML Editor, in welchen man unter anderem Templates herunterladen kann.

    Den Code wollte ich in einer Variable speichern. Aber folgendes: Wie weise ich ihr den wert aus dem Internet zu.

    Zum Beispiel "template1.txt"

    Leider habe ich keinen blassen Schimmer, wie ich auf das Internet zugreifen kann.

    PS: Wenn ich die Variable deklariere kommt folgende Fehlermeldung:
    "Die Anweisung ist in einem Namespace ungültig!"


    Edit: Habe gerade das Problem "Namespace" gelöst.
    Hay @wsk1000:
    dafür könntest die die DownloadStringAsync-Methode benutzen. msdn.microsoft.com/de-de/libra…cs-lang=vb#code-snippet-1
    Deine Variable deklarierst du als String un weißt ihr am besten "" zu. (Dim template As String = "")
    Anschließend weist du im DownloadStringCompleted deinen String zu msdn.microsoft.com/de-de/libra…gcompleted(v=vs.110).aspx
    Me.template = e.Result
    Mehr zum EventArgs findest du msdn.microsoft.com/de-de/libra…deventargs(v=vs.110).aspx
    Hier das ganze angewandt: stackoverflow.com/questions/27…lling-downloadstringasync
    PS: Du darfst eine Variable auch nicht im Namespace deklarieren, sondern muss sie in einer Klasse deklarieren.
    Oke... Danke mal für die Hilfe.

    Aber ich weis immer noch nicht wirklich wie ich das machen soll.

    Schau. Man kann zwischen drei Templates auswählen.

    Wenn auf "Download" gedrückt wird, läuft ein If- Abfrage. Deswegen, um zu schuaen, welches ausgewählt wurde:

    VB.NET-Quellcode

    1. If Button7.BackColor = Color.DeepSkyBlue Then
    2. ' Der auszuführende Download Code
    3. ElseIf Button6.BackColor = Color.DeepSkyBlue Then
    4. ' Der auszuführende Download Code
    5. ElseIf Button5.BackColor = Color.DeepSkyBlue Then
    6. ' Der auszuführende Download Code
    7. End If


    Hoffe du kannst mir folgen... ?(

    wsk1000 schrieb:

    Hoffe du kannst mir folgen...
    Kann ich :)
    Erstmal der Hinweis, dass man sowas wie "If Button1.BackColor = ..." nicht verwenden sollte.
    Der Grund ist der, dass du ja z.B wenn der User auf einen Button klickt die Farbe änderst. Du speicherst also die Aktion, die der User möchte, als Farbe zwischen.
    Du vergewaltigst also ein Teil deiner GUI dazu dir deine Daten zu speichern, das ist nicht gut denn GUI und Daten sollte man immer trennen.
    Deine GUI, also Oberfläche ist ausschließlich dazu da, Daten des Users entgegenzunehmen, und auszugeben.
    Außerdem gibt es bessere Speicher als ein Colorobjekt. Am besten sind int's, manchmal auch Strings.

    Bei deinem Problem würde ich also anders vorgehen.
    Wenn man zwischen 3 Templates auswählen kann würde ich eine Combobox benutzen.

    Dann würde ich versuchen mir die If-Abfrage zu sparen, denn wenn du 100 Templates hast, kannst du ja nicht 100 Abfragen machen. (Können schon, aber das sollte man lassen :) )
    Also muss was besseres her. Ich würde ein Dictionary vorschlagen. msdn.microsoft.com/de-de/library/xfhwa508(v=vs.110).aspx
    Vorteil hierbei ist, dass ich über einen Key, den passenden Wert abrufen kann.

    Hier mal eine kleine Implementierung. (Wäre besser wenn du async-Methoden nutzt)

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Net
    3. Public Class Form1
    4. ''' <summary>Speichert deine Templatenamen mit dem dazugehörigen Link</summary>
    5. Public values As New Dictionary(Of String, String)
    6. ''' <summary>Webclient für den Download</summary>
    7. Public WithEvents wc As New WebClient() With {.Proxy = Nothing}
    8. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    9. 'Paar Items hinzufügen
    10. values.Add("templatex", "http://de.wikipedia.org/wiki/Wikipedia:Hauptseite")
    11. values.Add("templatey", "http://usw.")
    12. End Sub
    13. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    14. 'Ausgewähltes Element holen und in Kleinbuchstaben umwandeln
    15. Dim selected As String = ComboBox1.SelectedItem.ToString().ToLower()
    16. 'Den Link aus dem Dictionary holen
    17. Dim link As String = values(selected)
    18. 'Runterladen
    19. MessageBox.Show(wc.DownloadString(New Uri(link)))
    20. End Sub
    21. End Class


    (Du musst etwas warten bis die Messagebox kommt)
    Viele Grüße.
    Es fängt damit an, dass du selbst Initiative zeigst und nachschaust was der Fehler heißt und diesen anschließend versuchst zu beheben.
    Man hat dir eh schon Code vorgekaut. Etwas Initiative musst du da schon auch zeigen. Und außerdem sind Fragen wie "wo deklariere ich ein Feld" zu 100% im Grundlagen Forum besser aufgehoben.

    Wenn du ein konkretes Problem hast, was nicht schon tausende andere hatten (und gelöst haben), dann kannste hier eine konkrete Frage stellen. Nur nen Fehler hinklatschen :thumbdown:


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.