read_dictT_read_dictReadDictReadDictread_dict (Operator)
Name
read_dictT_read_dictReadDictReadDictread_dict — Lesen eines Dictionaries aus einer Datei.
Signatur
void ReadDict(const HTuple& FileName, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* DictHandle)
void HDict::HDict(const HString& FileName, const HTuple& GenParamName, const HTuple& GenParamValue)
void HDict::HDict(const HString& FileName, const HString& GenParamName, const HString& GenParamValue)
void HDict::HDict(const char* FileName, const char* GenParamName, const char* GenParamValue)
void HDict::HDict(const wchar_t* FileName, const wchar_t* GenParamName, const wchar_t* GenParamValue)
(Nur Windows)
void HDict::ReadDict(const HString& FileName, const HTuple& GenParamName, const HTuple& GenParamValue)
void HDict::ReadDict(const HString& FileName, const HString& GenParamName, const HString& GenParamValue)
void HDict::ReadDict(const char* FileName, const char* GenParamName, const char* GenParamValue)
void HDict::ReadDict(const wchar_t* FileName, const wchar_t* GenParamName, const wchar_t* GenParamValue)
(Nur Windows)
static void HOperatorSet.ReadDict(HTuple fileName, HTuple genParamName, HTuple genParamValue, out HTuple dictHandle)
public HDict(string fileName, HTuple genParamName, HTuple genParamValue)
public HDict(string fileName, string genParamName, string genParamValue)
void HDict.ReadDict(string fileName, HTuple genParamName, HTuple genParamValue)
void HDict.ReadDict(string fileName, string genParamName, string genParamValue)
Beschreibung
read_dictread_dictReadDictReadDictReadDictread_dict liest ein Dictionary aus der durch FileNameFileNameFileNameFileNamefileNamefile_name
gegebenen Datei und gibt das Handle des Dictionaries in DictHandleDictHandleDictHandleDictHandledictHandledict_handle
zurück.
Der Operator unterstützt die folgenden Dateiformate:
- 'hdict'"hdict""hdict""hdict""hdict""hdict":
Binäres HALCON-Format für Dictionaries.
Dateien dieses Typs können mit write_dictwrite_dictWriteDictWriteDictWriteDictwrite_dict geschrieben werden.
Die Standard-Dateiendung für dieses Format ist 'hdict'.
- 'json'"json""json""json""json""json":
JSON (JavaScript Object Notation) Dateiformat.
Die Standard-Dateiendung für dieses Format ist 'json'.
Falls keine Datei mit dem angegebenen Namen existiert, sucht der Operator
durch Anhängen der Standard-Dateiendungen nach der Datei.
Der Dateityp wird automatisch aus der Dateiendung und dem Dateiinhalt
erkannt (welche übereinstimmen müssen).
Eine Reihe weiterer optionaler Parameter kann gesetzt werden.
Die Namen und Werte dieser Parameter werden in GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name und
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value übergeben. Einige der Parameter gelten nicht für
alle Dateitypen. Die folgenden Werte sind für GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name
möglich:
- 'json_value_true'"json_value_true""json_value_true""json_value_true""json_value_true""json_value_true",
'json_value_false'"json_value_false""json_value_false""json_value_false""json_value_false""json_value_false",
'json_value_null'"json_value_null""json_value_null""json_value_null""json_value_null""json_value_null":
-
Setzt die für JSON-Primitive verwendeten Werte.
Gültige JSON-Primitive sind 'true', 'false' und
'null'.
Wenn ein solches Primitiv in einer JSON-Datei gefunden wird, wird der
entsprechende Eintrag im Dictionary auf den mit diesen Parametern
gesetzten Wert gesetzt.
Der Wert wird in GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value übergeben und muss ein Tupel der
Länge 1 sein.
Standardmäßig werden die Primitive auf folgende Werte abgebildet:
1 für 'true',
0 für 'false' und
'HNULL'"HNULL""HNULL""HNULL""HNULL""HNULL" für 'null'.
Diese Parameter haben nur einen Einfluss, wenn eine JSON-Datei gelesen
wird.
- 'convert_json_arrays_to'"convert_json_arrays_to""convert_json_arrays_to""convert_json_arrays_to""convert_json_arrays_to""convert_json_arrays_to":
-
Mit diesem Parameter kann eingestellt werden, in welchen HALCON-internen
Datentyp JSON-Arrays konvertiert werden sollen.
Mögliche Werte für GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value sind:
- 'dict'"dict""dict""dict""dict""dict" (Standardwert):
-
JSON-Arrays werden in HALCON-Dictionaries konvertiert, mit von
0 an aufsteigenden Integer-Schlüsseln.
Dies ist immer möglich, beispielsweise auch wenn das JSON-Array weitere Arrays
als Einträge enthält, benötigt aber möglicherweise mehr Speicher als
wenn die Daten in einem HALCON-Tupel gehalten werden.
- 'tuple'"tuple""tuple""tuple""tuple""tuple":
-
JSON-Arrays werden in HALCON-Tupel konvertiert.
Falls dies nicht möglich ist, etwa bei Arrays die selber wieder Arrays
enthalten, wird ein Fehler geworfen.
- 'tuple_if_possible'"tuple_if_possible""tuple_if_possible""tuple_if_possible""tuple_if_possible""tuple_if_possible":
-
JSON-Arrays werden dann in HALCON-Tupel konvertiert, wenn dies
verlustfrei möglich ist. Andernfalls werden sie als HALCON-Dictionaries
zurückgegeben.
Bei Verwendung dieser Möglichkeit ist zu beachten, dass sich der Aufbau
des gelesenen Dictionaries je nach den enthaltenen JSON-Daten ändern
kann, auch wenn diese dem gleichen Schema folgen.
Beispielsweise wird ein Array von 2D-Punktkoordinaten in der Form
'{"pt": [[1,2], [3,4]]}'"{"pt": [[1,2], [3,4]]}""{"pt": [[1,2], [3,4]]}""{"pt": [[1,2], [3,4]]}""{"pt": [[1,2], [3,4]]}""{"pt": [[1,2], [3,4]]}"
umgewandelt in ein äußeres Dictionary, welches zwei Tupel enthält.
Falls unter dem gleichen Schema aber keine Punkte enthalten sind,
das JSON also die Form '{"pt": []}'"{"pt": []}""{"pt": []}""{"pt": []}""{"pt": []}""{"pt": []}" hat, so wird statt dem
äußeren Dictionary ein Tupel erzeugt. Der verwendende Code muss
auf diesen möglichen Wechsel vorbereitet sein.
Ausführungsinformationen
- Multithreading-Typ: independent (läuft parallel auch zu exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
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.
Parameter
FileNameFileNameFileNameFileNamefileNamefile_name (input_control) filename.read → HTuplestrHTupleHtuple (string) (string) (HString) (char*)
Dateiname der zu lesenden Datei.
Dateiendung: .hdict, .json
GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (input_control) attribute.name(-array) → HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)
Name des generischen Parameters.
Defaultwert: []
Werteliste: 'convert_json_arrays_to'"convert_json_arrays_to""convert_json_arrays_to""convert_json_arrays_to""convert_json_arrays_to""convert_json_arrays_to", 'json_value_false'"json_value_false""json_value_false""json_value_false""json_value_false""json_value_false", 'json_value_null'"json_value_null""json_value_null""json_value_null""json_value_null""json_value_null", 'json_value_true'"json_value_true""json_value_true""json_value_true""json_value_true""json_value_true"
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (input_control) attribute.name(-array) → HTupleMaybeSequence[Union[int, float, str]]HTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)
Wert des generischen Parameters.
Defaultwert: []
Wertevorschläge: 0, 1, 'HNULL'"HNULL""HNULL""HNULL""HNULL""HNULL", 'true'"true""true""true""true""true", 'false'"false""false""false""false""false", 'dict'"dict""dict""dict""dict""dict", 'tuple'"tuple""tuple""tuple""tuple""tuple", 'tuple_if_possible'"tuple_if_possible""tuple_if_possible""tuple_if_possible""tuple_if_possible""tuple_if_possible"
DictHandleDictHandleDictHandleDictHandledictHandledict_handle (output_control) dict → HDict, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des Dictionaries.
Parameteranzahl: DictHandle == 1
Ergebnis
Sind die Parameterwerte korrekt, dann liefert read_dictread_dictReadDictReadDictReadDictread_dict den
Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
write_dictwrite_dictWriteDictWriteDictWriteDictwrite_dict
Alternativen
json_to_dictjson_to_dictJsonToDictJsonToDictJsonToDictjson_to_dict,
create_dictcreate_dictCreateDictCreateDictCreateDictcreate_dict
Siehe auch
write_dictwrite_dictWriteDictWriteDictWriteDictwrite_dict,
serialize_handleserialize_handleSerializeHandleSerializeHandleSerializeHandleserialize_handle,
deserialize_handledeserialize_handleDeserializeHandleDeserializeHandleDeserializeHandledeserialize_handle
Modul
Foundation