DarkSky liefert "rain", "snow" oder "sleet" (jeweils mit Anführungszeichen) oder aber NULL (immer wenn die Niederschlagswahrscheinlichkeit bei 0% liegt).
Im Script wird nach Zeile A der Wert vom CUxD-Exec (s_cuxd = "CUxD.CUX2801001:1.") der geholte Wert (bspw. "rain" [inkl. Anführungszeichen] an den string Niederschlagsart_en übergeben.
Mein Problem ist nun, daß die IF-Bedingung unter Zeile C nicht funktioniert (obwohl keine Tippfehler drin sind), und deshalb "rain" nicht in Regen (ohne Anführungszeichen) übersetzt wird. Kommentiere ich jedoch den CUxD-Exec-Teil aus, und setzte den string Niederschlagsart_en = '"rain"' händisch (nach Zeile B), dann funktioniert die IF-Bedingung exakt wie sie soll.
A und B liefern per WriteLine rein optisch den gleiche Eingangswert für die IF-Bedingung: "rain".
Ich vermute einmal, daß der Typ/die Art des strings Niederschlagsart_en irgendwie verkehrt ist, und konvertiert werden muss. Nur wie!?
Code: Alles auswählen
string s_cuxd = "CUxD.CUX2801001:1.";
var DarkSkyURL = "'" # dom.GetObject('Wetter DarkSky URL').ValueList() # "'"; ! Wichtig für string s_cmd sind die einfachen Anführungszeichen, welche mit # verbunden werden (# = &), damit die URL mit Anführungszeichen gespeichert wird -> 'https://api.darksky.net...'
WriteLine("DarkSkyURL: " # DarkSkyURL # "\n") ! ### Debug-Ausgabe
! Aktuelle Niederschlagsart übergeben
string s_cmd = 'curl -sSf ' # DarkSkyURL # '| jq .currently.precipType';
dom.GetObject (s_cuxd # "CMD_SETS").State (s_cmd);
dom.GetObject (s_cuxd # "CMD_QUERY_RET").State (1);
! Zeile A
string Niederschlagsart_en = (dom.GetObject (s_cuxd # "CMD_RETS").State()); ! _en = englische Rohfassung aus dem CUxD holen
! Zeile B
! string Niederschlagsart_en = '"rain"'; ### DEBUG: Wert händisch gesetzt
! Ab hier wird Englisch zu Deutsch übersetzt (Niederschlagsart wird von DarkSky in Anführungszeichen geliefert also z.B. "rain")
! Zeile C
if ( Niederschlagsart_en=='"rain"' ) { string Niederschlagsart_de = "Regen"; }
if ( Niederschlagsart_en=='"snow"' ) { string Niederschlagsart_de = "Schnee"; }
if ( Niederschlagsart_en=='"sleet"' ) { string Niederschlagsart_de = "Graupelschauer"; }
else { Niederschlagsart_de = Niederschlagsart_en; } ! wenn NULL, dann NULL (DarkSky liefert keinen Wert bei 0% Wahrscheinlichkeit)
dom.GetObject ("Wetter Aktuelle Niederschlagsart").State(Niederschlagsart_de);