Wie Logdatei einlesen und zeilenweise aufteilen?

  • Hallo Leute,


    habe folgendes Problem.


    Ich habe eine nsf Datei die ich einlese. In der nsf sind Zeileneinträge untereinander angeordnet.
    Ich möchte jetzt das ich jede Zeile einzelen ansprechen kann. Das funktioniert aber leider nicht. Ich kann lediglich den ganzen Text einlesen.


    Auf mit Zeilenumbrüchen Chr(013)+Chr(010) kann ich den Text leider auch nicht aufteilen. Keine Ahnung aber wenn ich den Text mit einem left Befehl einschränken will bis zum Zeilenumbruch gibt er mir immer "" zurück.


    Was gibts da für eine Möglichkeit das ganze aufzuteilen?
    Im Notes 6 ist das von den Einträgen her schon aufgeteilt aber im 5er nicht.


    Hoffe ihr könnt mir wieder helfen.


    mfg Bahula


    EDIT: So lese ich die Datei ein.


    tmp1 =Evaluate("@left(@lowercase(Events);@lowercase("+Chr(034)+Events+Chr(034)+"))",doc)


    bis zu der Stelle wo ein Eintrag Events vorkommt.
    Ich brauche jetzt die komplette Zeile in der der Eintrag von Events vorkommt aber wie bekomm ich die wenn der irgendwo in der Zeile steht?
    das erste Events liest mir den log und das zweite Events ist der Begriff nach dem gesucht wird.

  • Eine NSF-Datei hat keine Zeileneinträge, eine NSF-Datei ist eine binäre Datei.


    Ein Notes-Dokument hat RT- und Textfelder, welche mehrere Zeilen Text beinhalten können.


    Daher: Auf welche Felder greifst Du zu und in welcher Sprache willst Du das lösen?

  • Ist Lotus Script im Designer 5.


    Feldname: Events
    Datentyp: Textliste
    Datenlänge: 40012 Byte
    Seq.-Num.: 4
    Doppelte Eintrags-ID: 0
    Feld-Flags:


    das sind die Daten vom Feld auf das ich zugreife.


    EDIT:
    Ich hab vor jeder Zeile so einen Zeiteintrag:
    31.01.2006 07:04:04
    Kann ich nach diesem eventuell trennen? Gibts vielleicht einen Zeitbefehl der überprüft ob ein eintrag ein gewisses Zeitformat hat?

  • Ich nehme mal an, du willst einen Eintrag aus der Log.nsf in die einzelnen Zeilen zerlegen ?


    Wir haben so was im Einsatz, schreiben die MiscEvents in eine Textdatei, die dann geparsed wird.


    Das geht so (hier nur der Teil des Codes, der für Dich interessant sein dürfte):


    Dein Logdokument übergibst du an doc.



    Natürlich kannst Du mit dem Inhalt von x auch andere Dinge anstellen, als in ein Textfile zu schreiben.


    Gruß


    Ozzy

  • Wenn Events ein Multivalue-Field wäre, könntest Du einfach:
    doc.Events(0) <= Erste Zeile
    doc.Events(1) <= Zweite Zeile
    doc.Events(2) <= Dritte Zeile


    Wenn es kein Multivalue-Field ist:

    Code
    Dim strarray As Variant
    
    strarray = Split( doc.Events(0), Chr$(13) & Chr$(10) )
    Messagebox strarray(1),,"Zeile 2"
  • Split ist erst ab 6 verfuegbar.#
    Ausserdem denke ich, dass das Feld Event nie MultiValue ist. Aber das sit eine Vermutung; ich kann nicht alle Logs ueberpruefen :)

  • da hast du recht, es ist kein MultiValue sonst würds schön gehen ist aber nicht.


    Wie könnte ich die dann trennen? Gibts noch eine andere Möglichkeit?


    mfg Bahula


    Edit:
    Kann ich das split dann genau so verwenden wie oben beschrieben?

    • Offizieller Beitrag

    oder teile den Eintrag mit Split auf ein Array auf.


    Gruß
    Dirk


    %edit
    Ok bei Version 5.x nachbauen mit instr und Left.

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

    • Offizieller Beitrag

    nadu könntest den String mit Instr() auf Trennzeichen prüfen und wenn eins vorhanden ist mit Left die ersten x Zeichen abschneiden und in ein Array schreiben. Danach ruft du mit dem gekürzten String die Funktion so lange auf, bis instr leer ist.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Mit dieser Funktion geht´s auch:

  • Hab das jetzt mal mit der Split Funktion probiert und auf Chr$(013) & Chr$(010) getrennt aber da trennt er nicht sauber jede Zeile sondern schreibt meist 2 oder 3 Zeilen aneinander.


    Wie kann ich das lösen das er jede Zeile nimmt?


    mfg Bahula


    P.S.: find ich toll das hier so schnell geholfen wird. :)