Hallo, kann man den Stream, den ein Programm normalerweise in eine Log-Datei schreibt irgendwie umleiten, so das er in einem Fenster sichtbar wird?
Danke
igillan
Hallo, kann man den Stream, den ein Programm normalerweise in eine Log-Datei schreibt irgendwie umleiten, so das er in einem Fenster sichtbar wird?
Danke
igillan
Du kannst zumindest in einer Schleife die Datei auslesen und wieder anzeigen.
Du kannst zumindest in einer Schleife die Datei auslesen und wieder anzeigen.
Ja, so mache ich es momentan. Ich dachte, vielleicht kann man den Stream in ein Fenster umlenken, denn wenn in der log-Datei nichts passiert, braucht man auch keine Schleife ständig "im Kreis herum rennen" zu lassen
igillan
Hi,
schau Dir mal die tee.exe an (such mal über google z.Bsp). Vielleicht hilft die Dir weiter in Zusammenhang mit STDOutRead.
;-))
Stefan
denn wenn in der log-Datei nichts passiert, braucht man auch keine Schleife ständig "im Kreis herum rennen" zu lassen
Eine Schleife mußt du in jedem Fall 'rennen' lassen.
Du kannst natürlich mal prüfen ob dein Programm die Logdaten unter einer festen Speicheradresse parkt. Dann könntest du dort abfragen.
Aber ich halte das Lesen der LogDatei für einfacher. Du brauchst doch nur deine Anzeige aktualisieren, wenn sich in der Logdatei was geändert hat. (z.B. Zeilenzahl als Referenzwert speichern und vergleichen)
Danke erst mal für eure Mühe, aber ich glaube, so werde ich es machen.
Aber ich halte das Lesen der LogDatei für einfacher. Du brauchst doch nur deine Anzeige aktualisieren, wenn sich in der Logdatei was geändert hat.
Gruß
igillan
Ich lese jetzt die letzte Zeile der Logdatei aus und stelle den Wert in einem "Label"Control dar. Leider flackert die Anzeige immer. Kann man das vielleicht auch irgendwie dämpfen?
Danke
igillan
Ich lese jetzt die letzte Zeile der Logdatei aus und stelle den Wert in einem "Label"Control dar. Leider flackert die Anzeige immer. Kann man das vielleicht auch irgendwie dämpfen?
Ich vermute mal, du machst das in einer Schleife und setzt den Wert bei jedem Durchlauf? Das muß dann ja flackern.
Du benötigst eine Variable, in der du die letzte Zeile zwischenspeicherst. Im kommenden Schleifendurchlauf vergleichst du den gespeicherten Wert mit dem Wert der letzten Zeile. Wenn die Werte ungleich sind, dann setzt du das Label neu und schreibst den jetzt letzten Zeilenwert in die Variable.
Ich mache es so:
While ProcessExists("TEST.EXE")
$CountLines = _FileCountLines("G:\Daten\log.txt")
$Logline=FileReadLine ( "G:\Daten\log.txt",$CountLines )
GUICtrlSetData($Log,$Logline)
$dif = TimerDiff($begin)/60000
$min=StringFormat("%.2f",$dif)
GUICtrlSetData($Laufzeit,"Laufzeit: "&$min&" min")
WEnd
Die Werte werden doch erst in eine Variable ausgelesen, oder verstehe ich nicht richtig.
igillan
So wird nur das Label aktualisiert, wenn sich der Wert in $min zum vorherigen Durchlauf geändert hat:
[autoit]$oldMin = ''
[/autoit][autoit][/autoit][autoit]While ProcessExists("TEST.EXE")
$CountLines = _FileCountLines("G:\Daten\log.txt")
$Logline=FileReadLine ( "G:\Daten\log.txt",$CountLines )
GUICtrlSetData($Log,$Logline)
$dif = TimerDiff($begin)/60000
$min=StringFormat("%.2f",$dif)
If $oldMin <> $min Then
GUICtrlSetData($Laufzeit,"Laufzeit: "&$min&" min")
$oldMin = $min
EndIf
WEnd
Vielen Dank!! Ich bin begeistert!!
Schönen Sonntag noch.
igillan
P.S. Wo kann mann eigentlich ein Thema als gelöst markieren?
Editieren des ersten Beitrags!