Page 1 of 1

A_LoopReadLine Überprüfen, ob es bestimmtes Zeichen enthält

Posted: 20 Jul 2018, 15:13
by songoku
Hallo,
ich würde gerne eine TXT Datei nach Zeilenumbruch parsen und anschließend überprüfen ob die Zeile, ein bestimmtes Zeichen in diesem Fall Doppelpunkt enthält.

Code: Select all

F1::

Loop, read, datei.txt
{
Loop, parse, A_LoopReadLine, "´n", "´r"
    {
dop := ":"
If InStr, (%A_LoopReadLine%), dop
{
msgbox, ja
}
else 
{
msgbox, nein
}
}
}
inhalt datei.txt

Code: Select all

1
2
3
11:22
erste Teil funktioniert aber sobald die Zeile ein Doppelpunkt enthält kommt ein Fehlermeldung.
Error: The following variable name contains an illegal character:
"11:22"
ist mein Vorgehen überhaupt so Realisierbar ?

Danke und Gruß

Re: A_LoopReadLine Überprüfen, ob es bestimmtes Zeichen enthält  Topic is solved

Posted: 20 Jul 2018, 15:41
by gregster
Klar, realisierbar auf jeden Fall. Aber du hast ein paar Syntaxfehler in deinem Skript, insbesondere mit der Funktion Instr(). Bitte schau dir die Dokumentation dazu nochmal an. Außerdem muss es `n und `r heißen ("backtick") - und nicht etwa ´n, in diesem Fall auch ohne Anführungszeichen.

Ein Beispiel ohne Datei (hatte keine Lust, eine anzulegen ;) ):

Code: Select all

var =
(
1
2
3
11:22
)
;--------------------------
F1::
;Fileread, var, datei.txt
Loop, parse, var,`n,`r
{
	msgbox % A_loopfield	
	If InStr(A_Loopfield,":")
	{
		msgbox, ja
	}
	else 
	{
		msgbox, nein
	}
}
return
Entferne einfach den oberen Teil über F1:: und das ; vor FileRead, dann sollte es auch mit einer Textdatei klappen (vorausgesetzt der Dateipfad stimmt). (Fileread is außerdem effizienter als Loop, read - wenn die Textdatei so klein ist wie hier, wäre es aber wahrscheinlich wurscht)

Re: A_LoopReadLine Überprüfen, ob es bestimmtes Zeichen enthält

Posted: 20 Jul 2018, 16:50
by songoku
@gregster Danke dir, hat bestens funktioniert.