TextdateiElement durchsuchen und in folgender Zeile Text einfügen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Artentus.

    TextdateiElement durchsuchen und in folgender Zeile Text einfügen

    Hallo leute,

    ich möchte meine Textdatei nach einen bestimmten Datum und Value suchen und in der anschließenden in eine bestimmte Stelle eines anderen Datei reinschreiben. Irgendwie klappt das ganze nicht. Es sortiert es einfach nicht nach Value (String) mit Datum.

    Zu verarbeitende Textdatei ist wie folgt aufgebaut:

    20.12.2013 14:53:10, Value(1),
    20.12.2013 14:54:10, Value(2),
    20.12.2013 14:56:10, Value(1),


    in der neuen Textdatei soll es wie folgt aufgebaut werden:




    20.12.2013 14:53:10, Value(1),
    20.12.2013 14:56:10, Value(1),
    20.12.2013 14:54:10, Value(2),

    Mein Ansatz ist wie folgt aufgebaut:


    Public Sub DataAnalysis()
    Try
    Dim path As String = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "Form.txt")
    Dim Data As New FileStream(Explorer1.pathBase, FileMode.Open)
    Dim ReaderData As New StreamReader(Data)
    Dim lineData As String
    Dim lineForm As String
    Dim dataLine() As String
    Dim formLine() As String

    Do Until ReaderData.Peek() = -1
    lineData = ReaderData.ReadLine
    dataLine = lineData.Split(",")

    Dim FormData As New FileStream(path, FileMode.Open)
    Dim ReaderFormData As New StreamReader(FormData)
    Dim context As String

    Do Until ReaderFormData.Peek() = -1

    lineForm = ReaderFormData.ReadLine

    If lineForm = "" Then
    context = dataLine(0) & ";" & dataLine(UBound(dataLine)) & ";" & dataLine(1) & ";" & vbNewLine

    End If
    formLine = lineForm.Split(";")

    If dataLine(0) = formLine(0) Then
    If dataLine(UBound(dataLine)).Contains(formLine(UBound(formLine))) Then
    context = dataLine(0) & ";" & dataLine(UBound(dataLine)) & ";" & dataLine(1) & ";" & vbNewLine
    ReaderFormData.
    End If
    End If

    Loop
    ReaderFormData.Close()
    System.IO.File.AppendAllText(path, context)

    Loop
    ReaderData.Close()

    Catch Exc As System.ArgumentNullException
    MsgBox("Zunächst Datei selektieren")
    End Try
    End Sub
    Hallo,

    du kannst den Quellcode hier im Forum
    zwischen zwischen einem [code=vbnet] und einem
    [/code] setzen, dann schau es wie folgt aus:

    VB.NET-Quellcode

    1. ' Da muss dann der Code rein.


    EDIT: Die Tags in Inlines gesetzt.

    MFG

    Alex-Digital :D
    ~ Alex-Digital :D

    if(!Internet.VBP.Get<User>("Alex-Digital").IsOnline) this.Close(); :D
    Ich würde dafür folgenden Ansatz wählen:
    1. Leg dir eine Klasse an, die sowohl Datum als auch Value getrennt speichern kann. Verwende hierbei für das Datum den DateTime-Typen.
    2. Lies die Datei mit File.ReadAllLines in einzelnen Zeilen aus.
    3. Gehe alle Zeilen durch, splitte sie an "," und caste aus den Teilen jeweils eine neue Instanz der Klasse (Instanzen in ne Liste packen).
    4. Liste nach dem Datum sortieren (entweder mit Sort oder OrderBy, je nach dem, ob du lieber mit LINQ oder IComparer arbeitest).
    5. Gehe alle Listeneinträge durch, forme eine Stringdarstellung davon und speichere die erhaltene Zeile in eine neue Datei.

    Edit: und wenn Value auch immer nur eine Zahl sein kann (sieht in deinem Beispiel so aus), dann solltest du dafür auch Integer und nicht String verwenden, geht dann noch einfacher mit dem Vergleichen.