fread_lineT_fread_lineFreadLineFreadLinefread_line (Operator)

Name

fread_lineT_fread_lineFreadLineFreadLinefread_line — Einlesen von einer Zeile aus einer Textdatei.

Signatur

fread_line( : : FileHandle : OutLine, IsEOF)

Herror T_fread_line(const Htuple FileHandle, Htuple* OutLine, Htuple* IsEOF)

void FreadLine(const HTuple& FileHandle, HTuple* OutLine, HTuple* IsEOF)

HString HFile::FreadLine(Hlong* IsEOF) const

static void HOperatorSet.FreadLine(HTuple fileHandle, out HTuple outLine, out HTuple isEOF)

string HFile.FreadLine(out int isEOF)

def fread_line(file_handle: HHandle) -> Tuple[str, int]

Beschreibung

fread_linefread_lineFreadLineFreadLineFreadLinefread_line liest aus der aktuellen Eingabedatei, die durch das Handle FileHandleFileHandleFileHandleFileHandlefileHandlefile_handle definiert ist und mit open_fileopen_fileOpenFileOpenFileOpenFileopen_file im Textformat geöffnet worden sein muss, eine komplette Zeile einschließlich des Zeilenumbruchzeichens ein.

Die eingelesene Zeile wird im Parameter OutLineOutLineOutLineOutLineoutLineout_line zurückgegeben. Sie beginnt an der aktuellen Dateiposition und endet am Dateiende oder mit dem nächsten Zeilenumbruchzeichen. 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_fileopen_fileOpenFileOpenFileOpenFileopen_file angegeben wurde. Die folgenden Zeichen werden unabhängig vom Encoding immer als Zeilenumbruch akzeptiert: '\n'"\n""\n""\n""\n""\n" (line feed), '\r'"\r""\r""\r""\r""\r" (carriage return) und '\f'"\f""\f""\f""\f""\f" (form feed). Unter Windows wird ein Zeilenumbruch normalerweise durch die Zeichenfolge '\r\n'"\r\n""\r\n""\r\n""\r\n""\r\n" (carriage return + line feed) dargestellt. Diese Zeichenfolge wird auf allen Systemen als ein Zeilenumbruch interpretiert und im Ausgabestring als '\n'"\n""\n""\n""\n""\n" zurückgegeben. In UTF-8-kodierten Dateien werden darüber hinaus auch die folgenden Unicode Steuerzeichen als Zeilenende interpretiert: 'U+0085'"U+0085""U+0085""U+0085""U+0085""U+0085" (next line), 'U+2028'"U+2028""U+2028""U+2028""U+2028""U+2028" (line separator) und 'U+2029'"U+2029""U+2029""U+2029""U+2029""U+2029" (paragraph separator).

Wenn das Ende der Datei erreicht wurde, ohne dass ein Zeichen in die Ausgabe übernommen wurde, liefert der Parameter IsEOFIsEOFIsEOFIsEOFisEOFis_eof den Wert 1, ansonsten 0.

Stößt der Operator fread_linefread_lineFreadLineFreadLineFreadLinefread_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_linefread_lineFreadLineFreadLineFreadLinefread_line jedoch normal beendet, wobei der Ausgabestring OutLineOutLineOutLineOutLineoutLineout_line 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':)set_system("filename_encoding","locale")SetSystem("filename_encoding","locale")SetSystem("filename_encoding","locale")SetSystem("filename_encoding","locale")set_system("filename_encoding","locale")).

Ausführungsinformationen

Parameter

FileHandleFileHandleFileHandleFileHandlefileHandlefile_handle (input_control)  file HFile, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Datei-Handle.

OutLineOutLineOutLineOutLineoutLineout_line (output_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Eingelesene Zeile.

IsEOFIsEOFIsEOFIsEOFisEOFis_eof (output_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Ende der Datei erreicht bevor ein Zeichen gelesen werden konnte.

Beispiel (C)

do {
  fread_line(FileHandle,&Line,&IsEOF);
} while(IsEOF==0);

Ergebnis

fread_linefread_lineFreadLineFreadLineFreadLinefread_line liefert den Wert 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.

Vorgänger

open_fileopen_fileOpenFileOpenFileOpenFileopen_file

Nachfolger

close_fileclose_fileCloseFileCloseFileCloseFileclose_file

Alternativen

fread_charfread_charFreadCharFreadCharFreadCharfread_char, fread_stringfread_stringFreadStringFreadStringFreadStringfread_string

Siehe auch

open_fileopen_fileOpenFileOpenFileOpenFileopen_file, close_fileclose_fileCloseFileCloseFileCloseFileclose_file, fread_charfread_charFreadCharFreadCharFreadCharfread_char, fread_stringfread_stringFreadStringFreadStringFreadStringfread_string

Modul

Foundation