Funktionsreferenz


FileRead

Liest eine bestimmte Anzahl von Zeichen aus einer zuvor geöffneten Textdatei.

FileRead ( "filehandle/filename" [, count] )

Parameter

filehandle/filename Das Handle der Datei, wie es von einem früheren Aufruf von FileOpen zurückgegeben wurde. Alternativ kann ein String mit dem Dateinamen als erster Parameter verwendet werden.
count [optional] Die Anzahl der einzulesenden Zeichen. Siehe Bemerkungen.

Rückgabewert

Erfolg: Gibt die eingelesenen Zeichen zurück. @extended wird auf die zurückgegebenen Bytes/Zeichen gesetzt.
Spezial: Setzt @error auf -1, wenn das Dateiende erreicht wurde.
Fehler: Setzt @error auf 1, wenn die Datei nicht im Lesemodus (read mode) geöffnet wurde oder ein anderer Fehler aufgetreten ist.

Bemerkungen

Eine negative oder nicht definierte Anzahl der einzulesenen Zeichen liest die ganze Datei von der aktuellen Position ab.

Wenn ein Dateiname statt eines Dateihandles angegeben wird, wird die Datei während des Funktionsaufrufes geöffnet und geschlossen. Für die Bearbeitung großer Textdateien ist das viel langsamer als die Arbeit mit Handles.
Hinweis: Nicht die Verwendung von Dateihandles und -namen vermischen. So soll man zum Beispiel nicht eine Datei mit FileOpen öffnen und dann in dieser Funktion einen Dateinamen verwenden. Entweder Handles oder Dateinamen benutzen - nicht beides!

Sowohl ANSI als auch UTF16/UTF8 formatierte Texte können gelesen werden - AutoIt erkennt den Typ automatisch.

Eine Datei kann binär (byteweise) ausgelesen werden wenn FileOpen mit dem Binärflag aufgerufen wird. In diesem Fall gibt count die Anzahl der Bytes an, nicht die der Zeichen.
Ein zu großer Wert für Anzahl kann dazu führen, dass AutoIt mit einem Speicherzugriffsfehler beendet wird.

Verwandte Funktionen

FileOpen, FileReadLine, FileWrite, FileWriteLine, String, FileSetPos, FileGetPos

Beispiel


Local $datei = FileOpen("test.txt", 0)

; Überprüft ob die Datei geöffnet werden konnte
If $datei = -1 Then
    MsgBox(0, "Error", "Konnte Datei nicht öffnen.")
    Exit
EndIf

; Liest 1 Buchstabe gleichzeitig bis das Ende der Datei erreicht wurde
While 1
    Local $buchstabe = FileRead($datei, 1)
    If @error = -1 Then ExitLoop
    MsgBox(0, "Buchstabe gelesen:", $buchstabe)
WEnd

FileClose($datei)