open_file
— Öffnen einer Datei im Text- oder Binärformat.
open_file( : : FileName, FileType : FileHandle)
open_file
öffnet eine Datei im Text- oder im Binärformat.
Der Name der Datei wird im Parameter FileName
übergeben.
Der Operator gibt einen Handle auf die Datei in FileHandle
zurück.
Mit dem Parameter FileType
wird der Typ der Datei bestimmt.
Für Textdateien kann zusammen mit dem Typ auch das Encoding der Datei
spezifiziert werden, dabei wird neben UTF-8 nur das jeweils lokale
8-Bit-Encoding unterstützt.
Die folgenden Einstellungen für FileType
werden unterstützt:
Öffnet eine bereits vorhandene Eingabedatei im Textformat lesend.
Öffnet eine neue Ausgabedatei im Textformat schreibend.
Öffnet eine bereits vorhandene Ausgabedatei im Textformat am Ende der Datei schreibend.
Öffnet eine bereits vorhandene Eingabedatei im Binärformat lesend.
Öffnet eine neue Ausgabedatei im Binärformat schreibend.
Öffnet eine bereits vorhandene Ausgabedatei im Binärformat am Ende der Datei schreibend.
Das an FileType
übergebene Tupel kann bei Textdateien als zweites
Element einen der folgenden Encoding-Einstellungen enthalten:
Zeichenketten werden in der Datei mit UTF-8 kodiert. Das ist der Standard, d.h. beim Öffnen von Dateien, die UTF-8 kodiert sind oder die nur reine ASCII-Zeichen enthalten, braucht das Encoding nicht angegeben werden.
Zeichenketten werden in der Datei mit dem lokalen 8-Bit-Encoding kodiert. Dieses hängt vom verwendeten Betriebssystem und der eingestellten Lokalisierung ab. Mögliche Encodings sind hier z.B. unter Windows die Codepages 1252 (Microsoft-Variante von Latin-1) oder 932 (Shift-JIS) und unter Linux die Locales en_US.utf8, de_DE.iso885915 oder ja_JP.sjis.
Das Encoding der Strings, die aus der Datei gelesen oder in sie
geschrieben werden, wird nicht berücksichtigt.
In diesem Modus werden Multi-Byte-Zeichen weder behandelt noch
interpretiert, was bedeutet, dass der Operator fread_char
in
diesem Modus immer genau ein Byte zurückliefert, und die Operatoren
fread_line
und fread_string
keine
lokalisierungsabhängigen Trennzeichen berücksichtigen.
Schließlich werden die Strings auch nicht in das aktuelle
Encoding der HALCON-Bibliothek umkodiert.
Hinweis: Die Strings werden dennoch in das Encoding der HALCON C/C++ Schnittstelle umcodiert, wenn sich das Encoding der Schnittstelle von dem der HALCON-Bibliothek unterscheidet. Für HDevelop Skripte ist das Encoding immer UTF-8. Um eine Umcodierung in HDevelop zu vermeiden, sollte das Encoding der HALCON-Bibliothek UTF-8 sein.
Für Aus- und Eingaben auf dem Terminal sind die Dateinamen 'standard' ('input' und 'output' ) und 'error' (nur 'output' ) reserviert.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
FileName
(input_control) filename →
(string)
Name der zu öffnenden Datei.
Defaultwert: 'standard'
Wertevorschläge: 'standard' , 'error' , '/tmp/dat.dat'
FileType
(input_control) string(-array) →
(string)
Art des Dateizugriffs und ggf. das String-Encoding.
Defaultwert: 'output'
Werteliste: 'append' , 'append_binary' , 'ignore_encoding' , 'input' , 'input_binary' , 'locale_encoding' , 'output' , 'output_binary' , 'utf8_encoding'
FileHandle
(output_control) file →
(handle)
Datei-Handle.
* Creating an output text file with the name '/tmp/log.txt' and writing * of a string: open_file('/tmp/log.txt','output',FileHandle) fwrite_string(FileHandle,'these are the first and last lines') fnew_line(FileHandle) close_file(FileHandle)
Sind die Parameterwerte korrekt, dann liefert open_file
den Wert 2 (H_MSG_TRUE).
Gegebenenfalls wird eine Exception-Behandlung durchgeführt.
fwrite_string
,
fread_char
,
fread_string
,
fread_line
,
fread_serialized_item
,
fwrite_serialized_item
,
fread_bytes
,
fwrite_bytes
,
close_file
Foundation