Ausgabe in Text-Datei geordnet anzeigen

  • VB.NET

Es gibt 156 Antworten in diesem Thema. Der letzte Beitrag () ist von .Phil.

    Ausgabe in Text-Datei geordnet anzeigen

    Hallo,

    ich hab ein euch eine Frage und hoff ihr könnt mir da weiterhelfen.
    Ich erzeuge in meinem Program eine Ausgabe und schreibe sie in eine Text-Datei.
    In dieser Text-Datei steht dann z.b
    23.02.2009 10:39 hallo
    23.02.2009 10:40 hallo2

    Jetzt zu meiner Frage:

    Wie kann ich die Ausgabe, die ich erzeuge ordnen?
    So, dass das aktuellste Datum(Uhrzeit) oben steht?
    Bei mir ist es leider immer durcheinander..

    Der Text ist zwar sortiert, aber wenn ich den Ordner/Programm schließe und wieder öffne schreibt er irgendwo weiter aber nicht oben.. damit das aktuellste Datum(Uhrzeit oben steht.
    Ich schreibe es nicht alles aufeinmal es kommt immer was dazu.


    Hoff ihr könnt mir helfen

    Grüße
    über eine Listbox!

    so sieht meine Text-DDatei aus:

    23.02.2009 14:18:54: Start
    23.02.2009 14:18:54: Prüfen
    23.02.2009 14:18:54: Ping
    23.02.2009 14:18:56: Transfer
    23.02.2009 14:19:14: Start
    23.02.2009 14:19:14: Prüfen
    23.02.2009 14:19:14: Ping
    23.02.2009 14:19:24: Start
    23.02.2009 14:19:24: Prüfen
    23.02.2009 14:19:28: Transfer

    jetzt simmt ja die Rheinfolge nicht..

    Wie funktioniert es mit Array.sort?
    Sagt mir leider nichts
    Ahh OK, ich sehe das Problem :). Die Felder werden in der Listbox unten angehängt :) und dann natürlich auch so in die Datei gespeichert. Spontan fällt mir da tatsächlich nur ein Umsortieren vor dem Speichern ein. Wenn die Reihenfolge in der Listbox in Ordnung ist (abgesehen davon, dass die neusten Einträge unten stehen) würde ich folgendes machen: Die Menge der Listview.Items rausfinden, einen Stringarray mit dieser Länge erstellen und dann mit ner Schleife runterzählen und die entsprechenden Elemente in den Array schreiben ala

    VB.NET-Quellcode

    1. For i = ListView1.Items.Count To 0 Step-1
    2. strArray(n) = ListView1.Item(n).Text
    3. Next

    Wenn es dann doch was mit Sortieren sein muss:
    msdn.microsoft.com/de-de/library/bb979433.aspx

    Ich hoffe das hilft als Ausgangspunkt

    Grüße
    Phil
    Hallo!

    Wie .Phil schon schrieb: ListView1.Items.Count
    Damit kommst du an die Anzahl. Jedoch weißt .Phils Schleife einen Fehler auf, da ide Auflistung
    0 basierend ist, musst du von

    VB.NET-Quellcode

    1. ListView1.Items.Count - 1 to 0 step -1


    die Items durchlaufen!


    Den Code kannst du einfügen, wo du ihn brauchst :)
    Vielleciht soll er ja auch hinter einem CommandButton ausgeführt werden, wer soll
    das schon wissen ;)
    hallo erstmal danke!
    habe noch e fragen:

    Quellcode

    1. lsb_log.Item(n).Text


    "Item" ist kein Member von System.Windows.Forms.Listbox


    danke:)

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

    danke super das funktioniert!!!!
    Super danke!
    nur nach paar Einträger überschreibt er die Text-Datei wieder.
    Hast du da auch ne idee?

    Danke:)

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

    Hallo!

    Du könntest sie im Appand-Modus öffnen, aber das bringt dir auch nichts,
    da neue Einträge logischerweise nur ans Ende einer Datei angehängt werden können,
    was sich dan wieder mit deinem Wunsch aktuelle Einträge an erster Stelle zu schreiben
    schneidet :)

    Eine weitere Möglichkeit wäre es die Einträge zu speichern und beim Einlesen neu
    zu sortieren.
    Was du machen kannst ist dir per StreamReader zeilenweise die Datei einlesen und in einen neuen Array schreiben. Diesen (falls noch nicht passiert) sortieren und dann, wenn die Datei wieder geschrieben wird, an die Datei anhängen.

    Grüße
    Phil
    Hallo!

    Wenn ich ehrlich sein soll, ist dies nicht gerade einfach zu lösen,
    da du zwei Werte hast, einmal ein Datum und einen "Text".
    Wenn du jene zusammen in ein Array liest und sortierst,
    dann sortiert er natürlich alphanummerisch, was dich auch nicht
    weiter bringt.

    Am besten wäre es wohl mit einer Datenbank zu lösen oder
    aber per xml. Jetzt weiß ich aber auch nicht, wie tief du in
    VB.NET drin steckst.
    Nunja,

    ein Array erstellst du einfach so:

    VB.NET-Quellcode

    1. Dim ar() As String = System.Text.RegularExpressions.Regex.Split(My.Computer.FileSystem.ReadAllText("c:\meineDatei.txt"), vbCrLf)
    2. Array.Sort(ar)
    3. For Each s In ar
    4. MsgBox(s)
    5. Next
    Mhh auf einem Timer ... da wirst du irgend wann Problemebekommen, wenn das Wegspeichern der Daten länger dauert als das Intervall deines Timers ist.
    Wie schreibst du denn bisher deine Daten in die Datei?

    VB.NET-Quellcode

    1. dim srReader as System.IO.StremReader = New StreamReader("C:\MyReader.txt")
    2. Do While (srReader.EndOfStream = False)
    3. strInfo = srReader.ReadLine()
    4. Loop
    5. srReader.Close()


    Grüße
    Phil