Zeile aus TXT (von URL) in Textbox

  • VB.NET

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Zeile aus TXT (von URL) in Textbox

    Hallo Community!

    Ich habe folgendes Problem. Es ist bestimmt nicht sonderlich schwer, dennoch habe ich Probleme damit.
    Ich würde gerne "random" eine Zeile aus einer .txt-Datei in eine Textbox laden. (Beispiel für den Ort der .txt-Datei: example.com/liste.txt)

    Ich hoffe jemand kann mir helfen! :)
    So betrachten wir das Problem mal:
    1. Datei einlesen
    2. Datei in Zeilen zerlegen
    3. eine zufällige Zeile ausgeben
    3.1 Zufällige Zahl generieren
    3.2 Zeile an dem Index in neuer Variable speichern
    4. Variable in Textbox ausgeben.

    Bei welchem Schritt hackts?

    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    Also magst du wissen wie man eine Datei einliest oder wie man sie in Zeile zerlegt bzw. ist 1. der Schritt bei dem du das Problem hast oder ist 2. der Schritt bei dem du das Problem hast?
    Kommt die Datei immer aus dem Web?

    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    Format der txt-Datei:

    Zeile1
    Zeile2
    Zeile3
    Zeile4


    Ich möchte eine von diesen Zeilen (egal welche, aber eben zufällig) in eine Textbox ausgeben.


    EDIT:

    Hätte da an sowas gedacht:

    VB.NET-Quellcode

    1. Dim WC As New System.Net.WebClient
    2. Dim site As String = WC.DownloadString("http://example.com/liste.txt")


    Und dann von site irgendwie random eins ausgewählt. Geht das?

    nikexo schrieb:

    Ich möchte eine von diesen Zeilen (egal welche, aber eben zufällig) in eine Textbox ausgeben.

    Ich hab das Problem schon verstanden(zumindest denk ich das oder muss man oben bei den Schritten noch einen Punkt hinzufügen?).
    Ich werd dir aber keine Lösung schreiben. Das musst du schon selber machen. Ich werde dir aber helfen eine Lösung zu finden. Damit ich aber auf dein Problem komme(bzw. was du nicht weist/verstehst) musst du mir eben die Fragen beantworten.

    Edit: ok also haben wir ja Punkt 1 schonmal abgehackt. Dann guck dir mal String.Split an(damit du die Datei in Zeilen zerlegen kannst).

    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    Funktioniert doch nicht alles.
    Habe jetzt mehrere Textdateien.

    VB.NET-Quellcode

    1. Dim ran As New Random
    2. Dim vornamen_req As HttpWebRequest = HttpWebRequest.Create("http://example.com/liste.txt")
    3. Dim vornamen_res As HttpWebResponse = vornamen_req.GetResponse()
    4. Dim vornamen_reader As StreamReader = New StreamReader(vornamen_res.GetResponseStream)
    5. Dim vornamen_cont As String = vornamen_reader.ReadToEnd
    6. Dim vornamen_x As New RichTextBox
    7. vornamen_x.Text = vornamen_cont
    8. txtVorname.Text = vornamen_x.Lines(ran.Next(1, vornamen_x.Lines.Length + 1))


    Wenn ich das gleiche jetzt mit Nachnamen mache:

    VB.NET-Quellcode

    1. Dim nachnamen_req As HttpWebRequest = HttpWebRequest.Create("http://example.com/liste2.txt")
    2. Dim nachnamen_res As HttpWebResponse = nachnamen_req.GetResponse()
    3. Dim nachnamen_reader As StreamReader = New StreamReader(vornamen_res.GetResponseStream)
    4. Dim nachnamen_cont As String = nachnamen_reader.ReadToEnd
    5. Dim nachnamen_x As New RichTextBox
    6. nachnamen_x.Text = nachnamen_cont
    7. txtNachname.Text = nachnamen_x.Lines(ran.Next(1, nachnamen_x.Lines.Length + 1))


    kommt "Der Index war außerhalb des Arraybereichs."

    Mir ist schon klar, dass ein Array mehrere Elemente hat und ich zu viele verlange, aber den Fehler finde ich dabei nicht. :P

    Zitat entfernt. ~Thunderbolt

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

    Es muss nicht vornamen_x.Lines.Length + 1 sondern vornamen_x.Lines.Length - 1 sein bzw. nachnamen_x.Lines.Length - 1.
    Auch wenn man das ganze anders lösen:
    Man sollte einen Array bauen:

    VB.NET-Quellcode

    1. Dim ran As New Random
    2. Dim vornamen_req As HttpWebRequest = HttpWebRequest.Create("http://example.com/liste.txt")
    3. Dim vornamen_res As HttpWebResponse = vornamen_req.GetResponse()
    4. Dim vornamen_reader As StreamReader = New StreamReader(vornamen_res.GetResponseStream)
    5. Dim vornamen_cont As String = vornamen_reader.ReadToEnd
    6. Dim vornamenlines() as String = vornamen_cont.Split(vbCrLf)
    7. Dim index as Integer = ran.Next(1, vornamenlines.Length - 1)
    8. txtVorname.Text = vornamenlines(index)

    (ungetestet)

    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

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

    Vollzitat entfernt. ~Trade


    VB.NET-Quellcode

    1. Dim index as Integer = ran.Next(1, vornamenlines.Lenght - 1)


    "Length" ist kein Member von "System.Array"

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

    Warum eig. ein HttpWebRequest?
    Mit dem WebClient geht's doch auch einfacher.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Find auch, dass ein Webclient angebrachter ist. Have fun.

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Ließt eine zufällige Zeile aus einer Remote-Datei aus.
    3. ''' </summary>
    4. ''' <param name="filename">Pfad zur Remote-Datei.</param>
    5. Private Function GetRandomLineFromRemoteFile(ByVal filename As String) As String
    6. Using wc As New WebClient
    7. Dim lines As String() = wc.DownloadString(filename).Split(New String() {Environment.NewLine},
    8. StringSplitOptions.None)
    9. Dim rnd As New System.Random
    10. Return lines(rnd.Next(0, lines.Count))
    11. End Using
    12. End Function

    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Lass doch mal die Vollzitate!

    Zum Thema: Einfach die Funktion aufrufen?!

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: