Doppelte Einträge aus Logdateien filtern die innerhalb Klammern stehen

  • VB.NET

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

    Doppelte Einträge aus Logdateien filtern die innerhalb Klammern stehen

    Moin,

    ich versuche gerade aus einer Logdatei alle Einträge innerhalb <> Klammern auszulesen, die doppelten Einträge sollen aussortiert/ignoriert werden und am Ende in eine ListBox geschrieben werden.
    [00:00:00] <Eintrag1> Beschreibung
    [00:00:00] <Eintrag2> Beschreibung
    [00:00:00] <Eintrag3> Beschreibung
    [00:00:00] <Eintrag1> Beschreibung
    [00:00:00] <Eintrag4> Beschreibung
    [00:00:00] <Eintrag1> Beschreibung


    Am Ende soll in die ListBox dann
    Eintrag1
    Eintrag2
    Eintrag3

    stehen.

    Bekomme immer Index Fehlermeldungen und habe auch keine Idee wie ich es am besten und effektivsten umsetzen soll, bisher habe ich es mit Distinct versucht, bekomme aber auch die Einträge innerhalb der Klammern nicht heraus gefiltert.

    Vielleicht hat ja jemand mal was ähnliches verwendet oder weiß Rat. ?(
    Willkommen im Forum. :thumbup:

    Farbanomalie schrieb:

    Bekomme immer Index Fehlermeldungen
    Wie sieht Dein bisheriger Code aus?
    Wie ganz genau lautet die Fehlermeldung?
    In welcher Zeile Deines Codes tritt sie auf?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    LogFile kommt per OpenFileDialog:
    Momentaner Stand...

    VB.NET-Quellcode

    1. Dim lines As String() = IO.File.ReadAllLines(LogFile)
    2. Dim distinctLines As String() = lines.Distinct().ToArray()
    3. ListBox1.Items.Clear()
    4. For Each line As String In distinctLines
    5. ListBox1.Items.Add(Split(Split(distinctLines.ToString, "<")(1), ">")(0))
    6. Next


    Der Fehler kommt durch den Split (Der Index war ausserhalb des Arraybereichs).
    Mit

    VB.NET-Quellcode

    1. ListBox1.Items.AddRange(distinctLines)
    klappt es aber dann schreibt er alles rein.
    Dieser Befehl kommt in Deinem Code-Snippet nicht vor.

    Farbanomalie schrieb:

    VB.NET-Quellcode

    1. ListBox1.Items.AddRange(distinctLines)
    Mit Deiner komplexen Befehlssequenz Split(Split(distinctLines.ToString, "<")(1), ">")(0) holst Du Dir Geister rein, die Du nicht beherrschst.

    Schmeiß das weg und schreibe in jede Zeile GENAU EINEN BEFEHL.
    Split(text,"<")(0) sind in diesem Kontext bereits zwei Befehle, einmal das Split(), zum Anderen der Index-Zugriff auf ein Array.
    Und
    Lerne zu debuggen:
    Debuggen, Fehler finden und beseitigen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke,
    aber ich habe keine Ahnung welches die sinnvollste Methode ist dies umzusetzen und wo an welcher Stelle ich am besten das Aussortieren integrieren soll.
    Habe im Netz und auch hier im Forum viele Ansätze gefunden, auch mit StreamReader.
    Auslesen der Datei und Anzeigen in RichText oder ListBox ist aber nicht das Problem, nur das aussortieren.
    Entweder bekomme ich Fehler oder Zahlen angezeigt. ?(
    Vielleicht klappt es die Tage wenn ich wieder mehr Zeit habe, für heute gebe ich auf.

    Trotzdem Danke :)
    Schau Dir Deine komplexe Codezeile#6 mit dem DoppelSplit nochmal gaaanz genau an. Dann siehst Du, dass sie nicht macht, was sie soll. Denn sie funktioniert noch, wenn Du die For-Schleife entfernst. Und das dürfte ja nicht sein. Geht aber, weil in der Codezeile nicht drinsteht, was Du geplant hattest.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.