Bestimmte Wörter in Textdatei auslesen

05/15/2012 17:05 Skatefreaky#1
Hey Leute,

habe ein kleines Problem mit dem Auslesen einer Textdatei. Unzwar lese ich derzeit die letzte Zeile einer Textdatei mit

Code:
$Bla = FileReadline($Bla1, -1)
aus.

Dann wird die ausgelesene Zeile in eine Listview eingetragen. Etwa so:

Code:
Func _Eintragen()
GUICtrlCreateListViewItem($zeit & '|' & $Bla, $list1)
Endfunc
Das ganze wird im Script durch den Befehl

Code:
Adlibregister("_Eintragen", 1000)
Jede Sekunde ausgeführt. Bis hier hin funktioniert alles top. Jetzt möchte ich nur nicht, dass jede Sekunde die letzte Zeile eingetragen wird, sondern nur dann, wenn die Zeile ein bestimmtes Wort enthält, beispielsweise "Salat". Und dann soll auch nicht alles aus dieser Zeile eingetragen werden, sondern nur ein Teil.

Beispiel:

"Ich esse gerne Salat"
Wort "Salat" bemerkt.
"Esse gerne Salat" eingetragen.

Vielen Dank für Antworten!
05/15/2012 17:09 V8II#2
Schau dir mal die Funktionen [Only registered and activated users can see links. Click Here To Register...] und [Only registered and activated users can see links. Click Here To Register...] an. Damit kann man nach bestimmten Worten in einer Zeichenkette suchen bzw. bestimmte Zeichenketten ersetzten.
05/15/2012 17:35 Njahs#3
Einmal ohne ListView:


Und einmal mit:
05/16/2012 17:07 Skatefreaky#4
Vielen Dank! Und kann ich dann auch einfach mehrere Stichwörter, nach denen er suchen soll hinzufügen?
05/16/2012 17:29 Njahs#5
Quote:
Originally Posted by Skatefreaky View Post
Vielen Dank! Und kann ich dann auch einfach mehrere Stichwörter, nach denen er suchen soll hinzufügen?
Ja, einfach mit 'and' arbeiten, sprich
"If StringInStr(...) and StringInStr(...) Then"
05/17/2012 11:22 Skatefreaky#6
Nochmals dankeschön :p ... Meine file.au3 scheint allerdings leider nicht richtig zu klappen. Kannst du deine vielleicht mal uploaden?
05/17/2012 11:28 Njahs#7
Quote:
Originally Posted by Skatefreaky View Post
Nochmals dankeschön :p ... Meine file.au3 scheint allerdings leider nicht richtig zu klappen. Kannst du deine vielleicht mal uploaden?
Es könnte auch an deiner datei liegen,
was für eine Errormeldung bekommst du?

File.au3
05/17/2012 11:59 Skatefreaky#8
Diese Meldung erscheint:

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

Edit: Mit deiner File.au3 kommt der selbe Fehler.
05/17/2012 12:05 Freddy​#9
Quote:
Originally Posted by Skatefreaky View Post
Diese Meldung erscheint:

[Only registered and activated users can see links. Click Here To Register...]
Was ist denn das für eine Variable? Du kannst einfach _FileOpen($sFilePath) benutzten
05/17/2012 12:24 Skatefreaky#10
Quote:
Originally Posted by Freddy​ View Post
Was ist denn das für eine Variable? Du kannst einfach _FileOpen($sFilePath) benutzten
Das ist in der File.au3 nicht in meinem Script. Das Problem hat sich übrigens jetzt erledigt, hatte in meinem Script eine Variable nicht deklariert.

Jetzt hätte ich nur noch die Frage, wie ich nur in der letzten Zeile suche?
05/17/2012 13:18 Freddy​#11
_FileCountLines()
FileReadLine()
05/17/2012 14:46 Skatefreaky#12
Vielen Dank. Hab leider noch ein weiteres Problem^^

Da ich ja einen Chat auslese, der in einer Textdatei gespeichert wird, steht dort auch viel überflüssiges bei. Das will ich natürlich alles nicht in meine listview reinquetschen.

Kann mir einer sagen wie man das "kürzt"?

Im Chat kommt beispielsweise:

2012.05.17 14:42:09 : [charname:Bumblebee;0.6275 1.0000 0.6275] sagt : hi

Jetzt würde ich gerne nach dem Wort "sagt" suchen und wenn er es gefunden hat die Zeile in die listview eintragen. Das funktioniert ja jetzt auch alles, nur will ich den überflüssigen Kram wie "[charname:Bumblebee;0.6275 1.0000 0.6275]" weg haben, sodass da nur:

14:42:09 : Bumblebee sagt : hi

steht. Wäre das möglich? Wenn ja wie? Danke schonmal.
05/17/2012 14:48 Freddy​#13
Mir StringRegExp, StringSplit, StringBetween usw..
07/04/2012 14:56 Skatefreaky#14
Ach ganz vergessen ... Wie kann ich das NUR in der letzten Zeile des Textdokumentes auslesen?
07/04/2012 18:58 -STORM-#15
Nicht so schön wie StringRegEx, aber für deine Zweicke völlig ausreichend und deultich einfacher zu verstehen:
Code:
#include <String.au3>
$string = "2012.05.17 14:42:09 : [charname:Bumblebee;0.6275 1.0000 0.6275] sagt : hi"
$string = StringTrimLeft($string, 11) ; entfernt das Datum und die darauf folgende Leerstelle
$time = StringLeft($string, 8) ; liest die Uhrzeit aus
$string = StringTrimLeft($string, 21) ; entfernt die Uhrzeit und " : [charname:"
$namearray = _StringBetween($string, "", ";") ; list den Namen in Array aus
$name = $namearray[0] ; definiert den Namen
$text = _StringExplode($string, "]") ; filtert alles vor "]" in einen Array
$text = $text[1] ; liest den text aus dem Array
$newstring = $time & " : " & $name & $text
Quote:
Originally Posted by Skatefreaky View Post
Ach ganz vergessen ... Wie kann ich das NUR in der letzten Zeile des Textdokumentes auslesen?
Code:
filereadline($file, -1)
-1 steht für die letzte Zeile.
Möglicherweise stehen auch -2, -3... für die vorletzte, drittletzte usw., da bin ich mir allerdings nicht sicher.