Log File auslesen

09/26/2010 16:12 sgxVion#1
Grueße :D seit gestern versuche ich mich an Autoit und hab mich schon in paar tutos von euch eingelesen,aber ich weiß einfach nicht wo hier der fehler drin steckt ...

Zum Programm:
Im Menu soll man mit den Button "..." das Textdokument auswaehlen das er andauernt lesen soll und sobald der text "test1" oder "test2" im Textdokument erscheint eine meldung ausgeben (spaeter vieleicht ein Tastendruck).Schwierige ist halt das er immer die letzte Zeile lesen soll weil das Dokument von einen anderen Programm geschrieben wird und sich dauernt veraendert.

Ich hab durch viele verschiedenen scripts etwas zusammen gewuefelt das halbwegs geht aber leider funktioniert der teil an den man das Textdokument aussucht nicht.Wenn ich die Datei im AutoIt Editor ($file = "blubb.txt") angebe funktioniert es .. aber wenn ich $file = $input1 angebe meldet er garnichts ..
HTML Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <array.au3>
#include <file.au3>
#include <string.au3>

GUICreate("Vion", 500, 200)
GUICtrlCreateLabel("Log:", 10, 20)
$sbutton = GUICtrlCreateButton("...", 8, 40)
$input1 = GUICtrlCreateInput("", 40, 40,180)
GUISetState()

HotKeySet("{ESC}", "_exit")

$if="1"
$file = "blubb.txt"
$wort = "test"
$wort2 = "test2"
$openfile = FileOpen($file, 0)

While 1
If $if="1" then
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            Exit
        Case $sButton
            $ainput = FileOpenDialog("Bitte Datei auswählen","","Textdokument (*.txt)")                        
            guictrlsetdata ($input1,$ainput)
            If @error Then
                MsgBox(0,"","Bitte ein Log auswaehlen.")
            EndIf
        EndSwitch
    EndIf
    
    $readline = FileReadLine($openfile)
    If StringInStr($readline, $wort) Then
    MsgBox(0, "", "test1" & $wort & " test1")
    ElseIf StringInStr($readline, $wort2) Then
    MsgBox(0, "", "test2")
EndIf
$ainput=guictrlread ($input1)        

WEnd


Func _exit()
    Exit
EndFunc

While 1
    sleep(1)
WEnd
Ich waere euch sehr dankbar fuer eine antwort :handsdown:

MfG

Vion
09/26/2010 17:37 mipez#2
Du hast also eine Datei (nehme mal an .log und weder encryptet noch binär), und willst die letzte Zeile auslesen?

Code:
AdlibRegister("_suchen",1000)

Func _suchen()
$file = FileOpenDialog("Auswählen",@workingdir,"All(*.*)")
$filea = FileOpen($file)
$fileb = FileReadLine($filea,-1)
GuiCtrlSetData($Input1,$fileb)
EndFunc
09/26/2010 18:38 sgxVion#3
Danke fuer deine schnelle Hilfe,aber die suchfunktion an sich funktioniert bei mir,blos ich hab das Problem das ich den Programm nicht sagen kann das die Datei die er durchsuchen soll in der Input Box ($input1) ist die ich ueber das Menu auswaehle :/ also im quellcode von mir hab ich $file = "blubb.txt" angegeben das es ueberhaupt funktioniert blos diese stelle moechte ich eintauschen das er die Auswahl die man ueber den "..." Button die dann in der Input Box erscheint nimmt.
09/26/2010 18:54 mipez#4
Uuuuuh... Also, was? oô

Ich versteh nicht so ganz was du eigentlich willst...

EDIT: Und verwende mal bitte Rechtschreibung und Grammatik^^
09/26/2010 19:08 sgxVion#5
^^ okay .. es ist so .. wenn ich mein Programm starte sucht es bereits das Textdokument ab und gibt Meldungen falls im Textdokument die gesuchten Woerter vorkommen.

Ich wollte das ganze vereinfachen das ich nicht jedes mal im Programm die stelle $file = "blubb.txt" umaendern muss,sondern bequem ueber den "..." Button das Textdokument auswaehlen.

[Only registered and activated users can see links. Click Here To Register...]

Aber da faengt mein Problem an .. wie soll ich es umschreiben das meine Auswahl durchsucht wird.(Ich meine das Textdokument und nicht den namen )

Mit Haenden und Fueßen erklaere ich es zu not :D
09/26/2010 20:03 lolkop#6
also erstmal hast du nicht eine vordefinierte funktion oder variable genutzt, aber fast alle includes die es gibt ins script gepackt.

ausserdem hast du aus irgend einem grund eine absolut unnötige abfrage vor deine gui schleife gepackt. danach hast du dann sogar noch eine weitere nie erreichbare endlosschleife unten im script.

ausserdem kann mit dem input nichts gemacht werden, da du ihm keinerlei funktion zugewiesen hast.

füg dir dochmal einen button oder hotkey ein um dann eine suche in dem file zu starten.

dann bei button/hotkey nutzung einfach input auslesen, file einlesen und im file suchen.
09/26/2010 20:08 mipez#7
Also is in der bla.exe ein bestimmter Text (maßgeblich letzte Zeile), der dann mit der geöffneten Datei verglichen werden soll?

Code:
$prefile = FileOpen(...)
$curfile = FileReadLine($prefile,-1)

While 1
Switch GuiGetMsg()
Case $Button1
$file = FileOpenDialog("Open",@workingdir,"Text (*.txt)")
$nexfile = FileReadLine($file,-1)
If $nexfile <> $curfile Then
GuiCtrlSetData($Input1,$curfile)
GuiCtrlSetData($Input2,$nexfile)
ElseIf $nexfile = $curfile Then
MsgBox(0,"","Identisch")
EndIf
EndSwitch
WEnd
kA ob das funktioniert, bin über PSP online xD