Textdatei: Jede 2te Zeile auslesen.

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Manschula.

    Textdatei: Jede 2te Zeile auslesen.

    Hallo.
    Ich wieder.
    Habe fast das gleiche Problem wie früher.
    Jetzt werde ich es genau erkären.
    Ich habe:
    1ne Textdatei
    1 Label
    1ne Listbox


    Die Textdatei liegt auf meinem Server.
    Der Inhalt sieht volgendermaßen aus:

    Firefox
    firefox.com
    Chrome
    chrome.com
    Safari
    safarie.com

    Ich weiß das die Links nicht stimmen.
    Ich will einen "Downloader" machen.
    Dort ist eine Listbox drin (Download) und ein Label (Link).
    So, mein Programm downloadet die Datei, und liest sie aus.
    Downloaden klappt ja, aber dann beim Auslesen soll nur die erste, und dann jede 2te ausgelesen werden.
    Beispiel:

    Firefox
    Chrome
    Safari

    Die Links sollen dann, sobald man z.B. auf einen Eintrag klickt, im Label angezeigt werden.
    Z.B.
    Der Benuter klickt auf Firefox, der Label Text soll die 2te Zeile der Textdatei sein.
    Wenn der Benutzer auf Chrome klickt, soll der Label Text die 4te Zeile sein.
    Wie geht das?

    Liebe Grüße, Michael.
    Hey,

    ich habe dir mal eine Lösung zusammengebaut, die sicherlich nicht die schönste und beste ist, aber sie funktioniert.

    VB.NET-Quellcode

    1. ' Benötigte Listen (global) deklarieren
    2. Dim liste_original As New List(Of String)
    3. Dim liste_adressen As New List(Of String)
    4. Dim liste_name As New List(Of String)

    Zuerst wird deine Textdatei eingelesen und anschließend in die Listen verteilt. In die Liste "liste_adressen" kommen die geraden Zeilen mit den Internetadressen, in die Liste "liste_namen" die ungeraden Zeilen mit den Programmnamen:

    Quellcode

    1. ' Textdatei komplett einlesen
    2. liste_original.AddRange(IO.File.ReadAllLines("C:\test.txt"))
    3. ' Liste mit Namen füllen
    4. Dim i As Integer
    5. For i = 0 To liste_original.Count - 1 Step 2
    6. ListBox1.Items.Add(liste_original.Item(i).ToString)
    7. liste_name.Add(liste_original.Item(i).ToString)
    8. Next
    9. ' Liste mit Adressen füllen
    10. For i = 1 To liste_original.Count - 1 Step 2
    11. liste_adressen.Add(liste_original.Item(i).ToString)
    12. Next

    Im Label1 wird, passend zum ausgewählten Programm in der Listbox1, die richtige Adresse angezeigt. Hierbei wird der Umstand ausgenutzt, dass der Programmname "Firefox" und die passende Adresse "http://www.firefox.de" in ihren Listen an der gleichen Position (Zeile) stehen.

    Quellcode

    1. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    2. Dim zeile As Integer
    3. If ListBox1.SelectedIndex >= 0 Then
    4. zeile = ListBox1.SelectedIndex
    5. Label1.Text = liste_adressen.Item(zeile).ToString
    6. End If
    7. End Sub

    Ich hoffe, du kannst damit was anfangen.

    Gruß, Manschula

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

    die sicherlich nicht die schönste und beste ist

    Das ist allerdings war :D Ich empfehle was in die Richtung:

    VB.NET-Quellcode

    1. Dim client As New Net.WebClient
    2. Dim lines() As String = Split(client.DownloadString("http://deineaddresse.de/deine_textdatei.txt"), vbNewLine)
    3. For i As Integer = 0 To lines.Length - 1
    4. If lines(i).StartsWith("http://") Then
    5. lsturls.Items.Add(lines(i))
    6. Else
    7. lstnamen.Items.Add(lines(i))
    8. End If
    9. Next
    10. 'client.Dispose

    Hier sind schließlich weder 2 Schleifen noch 3 Variablen notwendig - warum also? ;) Ich finde vor allen Dingen ist die Lösung unübersichtlich.