FileRead

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Christian68
Posts: 6
Joined: 01 May 2014, 11:15

FileRead

23 May 2018, 11:14

Hallo Community,

ich habe anhängenden einfachen Code und verstehe nicht, warum die Msgbox nicht die Meldung "Ist gleich 99" ausgibt. Die angegebene Datei besteht nur aus einer Zeile und in der steht 99 drin.

Vielen Dank schon mal im Voraus.
Attachments
temp.jpg
temp.jpg (35.87 KiB) Viewed 2155 times
User avatar
LuckyJoe
Posts: 340
Joined: 02 Oct 2013, 09:52

Re: FileRead

23 May 2018, 13:16

... also bei mir funktioniert es, wie es soll (AHK-Version 1.1.28.02), wenn die Text-Datei ANSI-/UTF-8- oder UTF-8-BOM-kodiert ist. Bist du sicher, dass das nur eine Zeile ist? Also kein Return oder LineFeed dahinter? Check mal mit einem HEX-Viewer (0D und/oder 0A dahinter?).

Good Luck
Herzliche Grüße aus dem Rheinland
Lucky Joe
Christian68
Posts: 6
Joined: 01 May 2014, 11:15

Re: FileRead

23 May 2018, 14:14

Danke für den Hinweis. Gerade mal gecheckt, da ist in der Tat ein 0d und 0a dahinter. Wie kriege ich das weg?
Attachments
temp.jpg
temp.jpg (47.84 KiB) Viewed 1858 times
garry
Posts: 3758
Joined: 22 Dec 2013, 12:50

Re: FileRead

23 May 2018, 14:47

ein Beispiel, Textfile mit mehreren Linien, die erste Linie beinhaltet 99
see auch > Loop,parse,f1,`n,`r

Code: Select all

F1=%a_scriptdir%\test.txt
FileReadLine, line,%f1%,1
msgbox,"%line%"
if (line=99)
  msgbox,ok
else
  msgbox,NOT 99 > %line%  
return
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: FileRead

23 May 2018, 15:48

Nur zur Klarstellung:
Wenn die letzten sichtbaren Zeichen in Deiner Datei Hex 0D0A (CRLF / Zeilenumbruch) sind, enthält Deine Datei zwei Zeilen. Wenn Du den Zeilenumbruch der letzten Zeile(n) ' loswerden' willst, geht das auch so:

Code: Select all

FileRead, temp, C:\Users\Christian\OneDrive\Schwab.txt
temp := RTrim(temp, "`r`n")
Garry's Lösung ist aber auch korrekt, wenn Du nur die erste Zeile einlesen willst.
Christian68
Posts: 6
Joined: 01 May 2014, 11:15

Re: FileRead

24 May 2018, 02:04

Vielen Dank! Beide Lösungen funktionieren.
@just me: warum werden bei Deiner Lösung die Buchstaben "r" und "n" entfernt?
Danke,
Christian
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: FileRead

24 May 2018, 02:20

0x0D (CR / Carriage Return) und 0x0A (LF / Line Feed) sind die Windows Codierungen (CRLF) für einen Zeilenumbruch. In AHK werden diese Zeichen als `r (CR) bzw. `n (LF) dargestellt (siehe Escapesequenzen).

Die Funktion RTrim() entfernt die im zweiten Parameter übergebenen Zeichen vom Ende einer Zeichenkette. Sie würde deshalb auch mehrere direkt aufeinanderfolgende Zeilenumbrüche am Ende des eingelesenen Dateiinhalts entfernen.
Christian68
Posts: 6
Joined: 01 May 2014, 11:15

Re: FileRead

24 May 2018, 02:24

Super. Verstanden. Vielen Dank!
garry
Posts: 3758
Joined: 22 Dec 2013, 12:50

Re: FileRead

24 May 2018, 14:17

@just me , danke auch für Dein Beispiel mit 'Rtrim'

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 23 guests