Hallo
wie kann man mit Autoit die Follow-Funktion von LESS nachstellen?
Wer LESS (Follow-Mode) nicht kennt: z.B. eine Logdatei beobachten, jede neu Zeile wird sofort angezeigt.
Ich nutze LESS hauptsächlich mit der Windowsupdate.log
Gruß und Danke
Hallo
wie kann man mit Autoit die Follow-Funktion von LESS nachstellen?
Wer LESS (Follow-Mode) nicht kennt: z.B. eine Logdatei beobachten, jede neu Zeile wird sofort angezeigt.
Ich nutze LESS hauptsächlich mit der Windowsupdate.log
Gruß und Danke
Also willst du einfach das der Immer guck ob sich in der datei was erändert hat und wenn das er es anzeigt?
Genau, mehr erstmal nicht.
Das geht z.B. so:
#include<WinAPI.au3>
$MyFile = FileOpen(@DesktopDir&"\test.txt" ,0)
Local $text = ""
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]While 1
$text &= FileRead($MyFile)
If @error < 0 Then ExitLoop
If @error > 0 Then Exit
ToolTip($text)
WEnd
Sleep(500)
WEnd
Func OnAutoItExit()
FileClose($MyFile)
EndFunc
#include<WinAPI.au3>
$MyFile = _WinAPI_CreateFile(@DesktopDir&"\test.txt" ,2,2,7)
Local $text = ""
[/autoit] [autoit][/autoit] [autoit]Dim $Buffer = DllStructCreate("char[1024]"), $read
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]While 1
If Not _WinAPI_ReadFile($MyFile,DllStructGetPtr($Buffer),1024,$read) Then
_WinAPI_CloseHandle($MyFile)
Exit
EndIf
If $read=0 Then ExitLoop
$text &= StringLeft(DllStructGetData($Buffer,1),$read)
ToolTip($text)
WEnd
Sleep(500)
WEnd
Func OnAutoItExit()
_WinAPI_CloseHandle($MyFile)
EndFunc
Das überwacht die test.txt auf dem Desktop
Eigentlich eine Supersache, nur leider funktioniert es nicht mit meinem LOG-File (liegt derzeit bei 1,2 M Chr).
Das Problem liegt wohl in der Standardzuweisung für die Variable "$text", diese kann nicht mehr als 30.000 Chr aufnehmen, wie kann man dies höher setzen?
Ein String sollte 2,1G Chr können oder ... aber wie deklariert man einen String?
Ein Frage nach am Rande, sind haben "&=" und "+=" ich habe daszu nichts gefunden?
Danke und Grüsse
Hi,
was möchtest du denn aus einer 2,1G Log-Datei rauslesen????
Da ist Autoit glaube ich net das richtige Prog für.
MfG
Der_Doc
Also 2,1G werden es nie werden und brauchen werden ich die letzten ca. tausend Zeilen.
Also nochmal die Frage, wie bekommt ich in eine Variable "$text" z.B. 40.000 Character?
Gruss
Eine String-Variable kann bei AutoIt bis zu 2147483647 Zeichen enthalten. Dazu muss man nichts spezielles machen.
Die Einschränkung von der Du hier sprichst, bezieht sich auf das Edit-Control. Wenn Du mehr als 30.000 Zeichen dort anzeigen lassen willst, musst Du mit GUICtrlSetLimit einen anderen Wert eintragen.
Vielen Dank.
Genau da lag der Fehler.
Jetzt haben sich doch noch ein paar Fragen aufgetan:
1.)
Kann man den in einem String verwendeten Speicher, wieder freigeben?
2.)
Wie kann ich den String im "GUICtrlCreateEdit" durchsuchen, über einen INPUT (oder STRG+F) und wie würde "Highlight'en" funktionieren?
nach was willst du denn genau durchsuchen? einer bestimmten zeichenfolge? einem bestimmten wort? ein bisschen genauer...
Zu 1.: Ich weiß nicht genau wie AutoIt die Garbage-Collection handhabt, aber ich denke, wenn Du der Variablen einen Leerstring zuweist, sollte der Speicher wieder freigegeben werden.
Zu 2.: Mit GUICtrlRead das Editfeld auslesen und dann mit StringInStr nach der Zeichenfolge suchen. Highlighten müsste mit _GUICtrlEdit_SetSel machbar sein.
Oscar
Vielen Dank für die Tipps, mal sehen was sich daraus machen lässt.
Gruß