fread_string
— Einlesen einer Zeichenkette aus einer Textdatei.
fread_string( : : FileHandle : OutString, IsEOF)
fread_string
liest aus der aktuellen Eingabedatei einen String ein.
Die Eingabedatei ist durch das Handle FileHandle
definiert und muss
mit open_file
im Textformat geöffnet worden sein.
Ein String beginnt mit dem ersten Zeichen, das kein Trennzeichen ist.
Das sind alle druckbaren Zeichen, aber auch alle Sonderzeichen, die weder
Leerzeichen noch Zeilenumbruch sind.
Ein String endet vor dem ersten Trennzeichen (Leerzeichen oder
Zeilenumbruch), nachdem mindestens ein Zeichen in die Ausgabe übernommen
wurde, oder wenn das Dateiende erreicht wurde.
Das Trennzeichen, das den String beendet, wird nicht in die Ausgabe
übernommen.
Der Dateizeiger bleibt jedoch auf dem Zeichen nach dem Trennzeichen stehen,
so dass ein nachfolgender Lesebefehl auf der Datei nach dem Trennzeichen
weiterlesen würde.
Die eingelesene Zeichenkette wird im Parameter OutString
zurückgegeben.
Falls notwendig, wird die Zeichenkette zuvor in das aktuell von der
HALCON-Bibliothek verwendete Encoding (standardmäßig UTF-8) umgewandelt.
Welche Zeichen als Trennzeichen interpretiert werden, hängt
von dem String-Encoding ab, das beim Öffnen der Datei mit open_file
angegeben wurde.
Das normale Leerzeichen ' ' (space) sowie die
Standard-ASCII-Trennzeichen
'\t' (tab),
'\f' (form feed),
'\n' (line feed),
'\r' (carriage return) und
'\v' (vertical tab) werden unabhängig
vom Encoding immer als Trennzeichen akzeptiert.
Abhängig vom Encoding können weitere Trennzeichen hinzukommen. Latin-1 definiert z.B. '0xA0' (no-break space) und Shift-JIS enthält wie viele andere asiatische Encodings ein ideographisches Leerzeichen ('0x8140' , ideographic space). Neben diesen Zeichen definiert der Unicode-Standard noch weitere Trennzeichen in insgesamt drei Kategorien: Leerzeichen (Zs), Zeilentrenner (Zl) und Absatztrenner (Zp).
Wenn das Ende der Datei erreicht wurde, bevor mindestens ein Zeichen in die
Ausgabe übernommen wurde, liefert der Parameter IsEOF
den Wert 1, ansonsten 0.
Stößt der Operator fread_string
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_string
jedoch normal
beendet, wobei der Ausgabestring OutString
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.
OutString
(output_control) string →
(string)
Eingelesene Zeichenkette.
IsEOF
(output_control) integer →
(integer)
Ende der Datei erreicht bevor mindestens ein Zeichen in die Ausgabe übernommen wurde.
fwrite_string(FileHandle,'Please enter text and return: ..') fread_string(FileHandle,String,IsEOF) fwrite_string(FileHandle,['here it is again: ',String]) fnew_line(FileHandle)
fread_string
liefert den Wert 2 (H_MSG_TRUE), falls eine Datei geöffnet
ist und ein geeigneter String eingelesen wird.
Ansonsten wird eine Fehlerbehandlung durchgeführt.
Encodingfehler haben keinen Einfluss auf den Rückgabewert.
fread_char
,
read_string
,
fread_line
open_file
,
close_file
,
fread_char
,
fread_line
Foundation