• hallo alle zusammen!
    habe ein kleines problem in vbscript.


    also.
    es gibt so ein logfile von einer datenbank, mit ziemlich vielen Einträgen. wenn ein fehler auftaucht entsteht eine Zeile in dem File in der ORA-....... steht.


    das programm untersucht dieses textfile in den letzten zeilen (wie viele werden angegeben) und gibt dann die zeile, und ein paar zeilen darüber und darunter, wo der fehler ist aus.


    das programm funktionier berzeits. aba es ist nicht seht gut geschrieben.
    es wird jede zeile in diesem logfile einem eintrag in einem feld zugewiesen. log file ist ziemlich lang und somit entsteht eine hohe memory auslastung. da problem ist ich will ja nur die letzten zeilen von diesem file kontrollieren. und die vieleln oberen sind mir egal.


    so jetz meine frage. kann ich ein textfile von unten beginnend lesen?? ?(
    dann könnte is das feld dimensionieren und es würdn nur die zeilen eingetragen die ich wirklich brauche.


    schicke euch mal den problemteil von dem programm.
    vielleicht weis jemand wi man das machen kann.



    Do Until objFile.AtEndOfStream
    ReDim Preserve arrFileLines(i)
    arrFileLines(i) = objFile.ReadLine
    i = i + 1
    Loop


    also hier siht man gut dass er jede zeile von dem file auf einen einzelnen eintrag im feld schreibt. wi kann ich dieses file von unten lesn und somit nur die benötigten einträge in das feld schreiben.


    in C ist es kein problem ein file von unten zu lesen.
    aba ich weis nicht wi es in vbscript geht.
    bitte schreibt mir wenn ihr wisst wis geht

  • Also ich kenne mich in VBScript gar nicht aus. Kann dir daher also auch nicht sagen, wie man dort eine Datei rückwärts einliest.
    Aber eine Möglichkeit wäre, wenn du 2 Durchläufe machst. Beim ersten zählst du die Zeilen und merkst dir die Zeile k wo ORA auftritt. Und beim zweiten fängst du dann bei k-5 z.B. an deine Zeilen zu speichern.
    Könnte dann ungefähr so aussehen:



    Do Until objFile.AtEndOfStream
    Muell = objFile.ReadLine
    if arrFileLines == ORA Then k=i
    i=i+1
    Loop


    in k ist jetzt die Zeilennummer vom letzten ORA gespeichert.
    Außerdem werde die Zeilen nicht in einem Feld sondern nur in einer Variable abgelegt. Spart Speicher.
    Dann kann man jetzt den 2. Durchlauf machen, wo du dann bei k-5 zB. beginnen kannst.


    Do Until i = k-5
    Muelll = objFile.ReadLine
    i = i + 1
    Loop
    // alle Zeilen bis k-5 als Müll eingelesen (nur auf einer Variable)
    // jetzt der Rest ordentlich


    Do Until objFile.AtEndOfStream
    ReDim Preserve arrFileLines(j)
    arrFileLines(j) = objFile.ReadLine
    j=j+1
    Loop


    Das ganze ist zwar nicht besonders schön, aber wenn man sich das zusätzliche einlesen erlauben kann, dienst das als schneller Workaround


    Wie gesagt, ich kenne mich mit VBScript überhaupt nicht aus, also nimm die Codezeilen nicht so ernst. Das Komzept ist das entscheidende.