Inhalt einer Textdatei sortieren

d4kine

Erfahrenes Mitglied
Hallo Leute.

Also mein Problem ist, wie der Titel schon sagt, das ich irgendwie nicht hinterkomme, wie ich den Inhalt einer Textdatei sortiere
Der Inhalt sieht folgendermaßen aus:

Code:
883621 , Waschlappen
123433 , Handtücher
221455 , Badetücher
Das Programm ließt den Text aus und gibt ihn in der VB-Form an, soweit bin ich gekommen, aber mit dem Sortieren, bekomm einfach nicht hin. Hat jemand eine Idee oder ein Tutorial dazu gefunden? Achja, die Form soll den Text auslesen, sortieren und danach den Text direkt wieder in der Textdatei sortiert speichern, sodass der Inhalt später so aussieht:

Code:
123433 , Handtücher
221455 , Badetücher
883621 , Waschlappen
Danke schonmal ;)
 

yan1

Erfahrenes Mitglied
Hi,

am besten du erstellst dir eine Klasse 'Artikel' die die Membervariablen 'number' und 'text' hat. Außerdem soll sie noch das Interface ICompareable implementieren. In der CompareTo Methode vergleichst du nach der Nummer.

Du holst dir alle Datensätze aus deiner Datei raus, packst jeden in ein Artikel Objekt und schmeißt die alle in eine ArrayList. Wenn du es wieder speichern willst, brauchst du nur die Sort() Methode der Liste aufrufen und dann in die Datei zurückschreiben.
Schon hast du eine sortierte Datei ;-)

Lg, Yanick
 

d4kine

Erfahrenes Mitglied
Hallo. Erstmal danke für die schnelle Antwort ;)

Jetzt muss ich leider gestehen, das ich das nicht so ganz hinbekomme was du gesagt hast, weil ich
1. von VB6 zu VB.net umgestiegen bin und
2. nochnie mit Arrays gearbeitet habe...

Auslesen der Textdatei habe ich hinbekommen:
Code:
        Dim ReadFile As StreamReader
        Dim ReadIt As String

        ReadFile = File.OpenText("D:\test.txt")
        Do While ReadFile.Peek() >= 0

            ReadIt = ReadFile.ReadLine()
            ListBox1.Items.Add(ReadIt)
        Loop
        ReadFile.Close()

Ich weiß jetzt aber nicht, wie ich das mit dem Array machen soll. Also Theoretisch hab ichs verstanden, aber Praktisch umsetzten ist schlecht :/
 
Zuletzt bearbeitet:

d4kine

Erfahrenes Mitglied
Okay, ich habs jeztz OHNE Array gemacht.Einfach mal drauf los gecoded und geschaut, was bei rauskam. Hat zwar lange gedauert, aber es funktioniert. Hier nochmal für alle, falls auch Andere das selbe Problem haben :)

Code:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ReadFile As StreamReader
        Dim ReadIt As String
        ListBox1.Items.Clear()
        ReadFile = File.OpenText("D:\test.txt")
        Do While ReadFile.Peek() >= 0
            ReadIt = ReadFile.ReadLine()
            ListBox1.Items.Add(ReadIt)
        Loop
        ReadFile.Close()

        ListBox1.Sorted = True

        Dim WriteFile As StreamWriter
        Dim i As Short
        WriteFile = New StreamWriter("D:\Test2.txt", False)
        For i = 0 To ListBox1.Items.Count - 1
            WriteFile.WriteLine(ListBox1.Items(i))
        Next
        WriteFile.Close()
    End Sub
1. Erst wird die Datei test.txt einlegesen und in eine ListBox übertragen.
2. Danach wird die ListBox sortiert
3. Abschließend wird jede Zeile der ListBox mithilfe einer simplen For-Next Schleife ausgelesen und jede Zeile einzeln nacheinander in die Textdatei test2.txt geschrieben.

Fertig :D

Danke an yan1 für die Hilfe, auch wenn ich eine andere für mich einfachere Art gewählt habe ;)
 

Neue Beiträge