fread_line
— Einlesen von einer Zeile aus einer Textdatei.
fread_line( : : FileHandle : OutLine, IsEOF)
fread_line
liest aus der aktuellen Eingabedatei, die
durch das Handle FileHandle
definiert ist und mit open_file
im Textformat geöffnet worden sein muss, eine komplette Zeile
einschließlich des Zeilenumbruchzeichens ein.
Die eingelesene Zeile wird im Parameter OutLine
zurückgegeben.
Sie beginnt an der aktuellen Dateiposition und endet am Dateiende oder mit
dem nächsten Zeilenumbruchszeichen.
Nachfolgende Leseoperationen auf der Datei beginnen mit dem ersten Zeichen
nach dem Zeilenumbruch, d.h. mit der nächsten Zeile.
Falls notwendig, wird die eingelesene Zeile in das aktuell von der
HALCON-Bibliothek verwendete Encoding (standardmäßig UTF-8) umgewandelt.
Welche Zeichen als Zeilenumbruch interpretiert werden, hängt
vom String-Encoding ab, das beim Öffnen der Datei mit open_file
angegeben wurde.
Die folgenden Zeichen werden unabhängig vom Encoding immer als Zeilenumbruch
akzeptiert:
'\n' (line feed),
'\r' (carriage return) und
'\f' (form feed).
Unter Windows wird ein Zeilenumbruch normalerweise durch die Zeichenfolge
'\r\n'
(carriage return + line feed) dargestellt.
Diese Zeichenfolge wird auf allen Systemen als ein Zeilenumbruch
interpretiert und im Ausgabestring als
'\n' zurückgegeben.
In UTF-8-kodierten Dateien werden darüber hinaus auch die folgenden
Unicode Steuerzeichen als Zeilenende interpretiert: 'U+0085'
(next line), 'U+2028' (line separator) und 'U+2029'
(paragraph separator).
Wenn das Ende der Datei erreicht wurde, ohne dass ein Zeichen in die
Ausgabe übernommen wurde, liefert der Parameter IsEOF
den Wert 1, ansonsten 0.
Stößt der Operator fread_line
beim Lesen auf Bytes, die im
angegebenen Encoding kein gültiges Zeichen ergeben, wird ein
Low-Level-Fehler ausgegeben.
Unabhängig von dem Low-Level-Fehler wird fread_line
jedoch normal
beendet, wobei der Ausgabestring OutLine
ungültige Zeichen
enthalten kann.
Darüber hinaus wird ein Low-Level-Fehler erzeugt, wenn der eingelesene String
nicht verlustfrei in das aktuelle Encoding der HALCON-Bibliothek umgewandelt
werden kann.
Dies kann für eine in der Datei korrekt kodierten Zeichenkette nur
vorkommen, wenn die Datei UTF-8-kodiert ist und die
HALCON-Bibliothek das lokale Encoding verwendet
(s.a. set_system(::'filename_encoding','locale':)
).
FileHandle
(input_control) file →
(handle)
Datei-Handle.
OutLine
(output_control) string →
(string)
Eingelesene Zeile.
IsEOF
(output_control) integer →
(integer)
Ende der Datei erreicht bevor ein Zeichen gelesen werden konnte.
do { fread_line(FileHandle,&Line,&IsEOF); } while(IsEOF==0);
fread_line
liefert den Wert 2 (H_MSG_TRUE), falls die Datei geöffnet
ist und eine geeignete Zeile eingelesen wird.
Ansonsten wird eine Fehlerbehandlung durchgeführt.
Encodingfehler haben keinen Einfluss auf den Rückgabewert.
open_file
,
close_file
,
fread_char
,
fread_string
Foundation