Hallo an alle
Ich habe da mal ein kleines problem.
Ich wollte gerne eine txt Datei auslesen und zwar immer die letzte zeile und nur die spalte 42 bis 54.
und das in einem abstand von 60 Sekunden
Ich währe über eure Hilfe sehr dankbar
LG an alle
Hallo an alle
Ich habe da mal ein kleines problem.
Ich wollte gerne eine txt Datei auslesen und zwar immer die letzte zeile und nur die spalte 42 bis 54.
und das in einem abstand von 60 Sekunden
Ich währe über eure Hilfe sehr dankbar
LG an alle
Hmmm...eine Textdatei hat Spalten? ![]()
Poste doch mal eine Beispieldatei, dann kann man Dir leichter helfen.
Spalten ![]()
Meinst du so
#include <File.au3>
$datei = "C:\test.txt"
AdlibEnable("_auslesen", 60000) ;alle 60 Sekunden aufrufen
[/autoit] [autoit][/autoit] [autoit]Func _auslesen()
$file = FileOpen($datei, 0)
If $file = -1 Then
MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
Exit
EndIf
$zeilen = _FileCountLines($file) - 1 ;Anzahl Zeilen
$letzte_zeile = FileReadLine($file, $zeilen) ;auslesen
$letzte_zeile = StringLeft($letzte_zeile, 54) ;rechts wegtrimmen
$letzte_zeile = StringTrimLeft($letzte_zeile, 41) ;links wegtrimmen
ConsoleWrite($letzte_zeile & @CRLF)
FileClose($file)
EndFunc ;==>_auslesen
While 1
Sleep(10)
WEnd
Hi
Hänge mal ein Bild an mit dem was ich meine.
Hallo systemtrader,
bitte sehr:
$file = FileOpen("test.txt", 1)
; Check if file opened for writing OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
$line = ""
For $i = 1 To 80
$line = $line & Chr(Random(65, 88, 1))
Next
FileWriteLine($file, $line)
FileWriteLine($file, "Ich bin die letzte Zeile Ich bin die letzte Zeile Ich bin die letzte Zeile Ich bin die letzte Zeile Ich bin die letzte Zeile Ich bin die letzte Zeile")
FileClose($file)
;====================== hier beginnt das eigentliche Skript ============================================
;Abbruch mit ESCape
ReadLastLine() ;damit sofort beim Programmstart die letzte Zeile gelesen wird
HotKeySet(("{Esc}"), "Terminate")
AdlibEnable("ReadLastLine", 60000)
while 1
Sleep(250)
WEnd
Func ReadLastLine()
$file = FileOpen("test.txt", 0)
; Check if file opened for reading OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
$line = FileReadLine($file, -1)
$l4254 = StringMid($line, 42, 13)
MsgBox(0, "Line read:", $l4254)
FileClose($file)
EndFunc ;==>ReadLastLine
Func Terminate()
AdlibDisable() ;Adlib zurücksetzen
Exit
EndFunc ;==>Terminate
schau dir die entsrechenden Befehle dazu in der Hilfe an und viel Spaß damit ![]()
Edit: hatte doch tatsächlich die Wiederholung alle 60 sec vegessen
mfg (Auto)Bert
Hallo nochmal an alle
Ich Bedanke mich für eure bisherrigen Lösungen und Ideen,
ein echt freundliches Forum bin wirklich Positiv begeistert
Aber ich glaube ich muss mein Problem ein wenig genauer
beschreiben, wir haben 2 teile der Software schon anhand der
Reference selber gelöst bekommen.
Nur eben das eine Nicht, eigentlich wie oben beschrieben.
Also Ich möchte eigentlich immer alle 60 Sekunden in der letzten Zeile 2 Bereiche auslesen,
zum einen die Zeit und zum anderen den Namen "Ankauf" bzw " "Verkauf" in der txt Datei.
Um dan eine exe zu starten ( die exe starten haben wir schon gelöst )
Beim Nächsten auslesen nach 60 Sekunden soll die letzte Zeile eine andere Uhrzeit gosser oder kleiner
haben, bevor widerum die exe gestartet würd.
LG
Nur zu ![]()
Dieses Forum ist wirklich Klasse.
Für jede Frage, kannst du die Boardsuche benutzten und wenn die nicht hilf einen Thread machen ![]()
Hilfe..
Schnell und kompetent!
Da gibt es eine einfachere Lösung (statt $text halt "FileRead(deine_Datei)")
[autoit]#include <array.au3>
$text = _
'10/02/2009 02:00:00 2 ankauf 12 1 ' & @CRLF & _
'13/02/2009 08:00:00 2 verkauf 13 0 0' & @CRLF & @CRLF & _
'14/02/2009 05:00:00 5 ankauf 14 1 ' & @CRLF & _
'14/02/2009 10:00:00 5 verkauf 12 0 0' & @CRLF & @CRLF & _
'16/02/2009 06:00:00 6 ankauf 12 1 ' & @CRLF & _
'18/02/2009 12:00:00 6 verkauf 13 0 0' & @CRLF & @CRLF & _
'19/02/2009 07:00:00 7 ankauf 12 1 ' & @CRLF & _
'19/02/2009 08:00:00 8 verkauf 14 0 0'
$pattern = '(\d{2}:\d{2}:\d{2})(?:\s+\d+\s+)(\w+)'
$ret = StringRegExp($text, $pattern, 3)
;~ _ArrayDisplay($ret)
MsgBox(0, 'Letzte Zeile', $ret[UBound($ret)-2] & ' ' & $ret[UBound($ret)-1])
[/autoit]Falls die Leerbereiche evtl. Tabs enthalten, müßte das Pattern im RegEx angepaßt werden.
Hallo BugFix
Und allen anderen Helfern ![]()
Ich danke euch ganz doll für die sehr Freundliche Hilfe von euch
wirklich schönes Forum.
LG ST